编码问题?帮忙看看::鄙人较愚望高人指点呐!!!
设有一个整形数组 A[0..N-1];存放的元素为 0~N-1 (1<N<=10)之间的整数,且 A[i]≠A[j](i≠j)。例如,当N=6时,有:A=(4,3,0,5,1,2)。此时,数组A的编码定义如下:A[0]编码为0;
A[i]编码为:在A[0],A[1],…,A[i-1]中比A[i]的值小的个数 (i=1,2,…,N-1)
例如上面数组 A的编码为:B=(0,0,0,3,1,2)
若给出数组A,则可求出其编码。同理,若给出数组A的编码,可求出A中的原数据。
输入:
推导方向(取值为1或2,如为1,则表示根据数组求数组编码;如为2,则表示根据编码反求数组)
数组个数
数组或数组编码元素
输出:
数组编码、或数组本身(元素之间以空格分隔)
例子1输入 1 输出 例子2输入2 输出
6 6
4 3 0 5 1 2 0 0 0 3 1 2 0 0 0 3 1 2 4 3 0 5 1 2
main
{int m,n,i,j,count=0,c[20],a[20]; int static b[20]={0};
scanf("%d\n%d",&m,&n);
for(i=0;i<n;i++)
scanf("%d",a[i]);
for(i=0;i<n;i++)
b[i]=i;
if(m==1)
{
for(i=0;i<2*n-1;i+=2)
for(j=i+2;j<2*n-1;j+=2)
{if(a[i]>a[j])
b[i]++;}
for(i=0;i<2*n-1;i++)
printf("%d",b[i]);
}
if(m==2)
{
b[a[n-1]]=10; c[n-1]=a[n-1];
for(i=n-2;i=n-2;i--)
{ for(j=0;j<n;j++)
if(b[j]>=0&&b[j]<=9)
{ count++;
if(count==a[n-2])
{c[n-2]=b[j]; b[j]=10;}
else continue;
}
n=n-1;
}
}
for(i=0;i<n;i++) printf("%d",c[i]);
}
----------------解决方案--------------------------------------------------------
算法很烂 N个For
#include "stdio.h"
main()
{int m,n,i,j,k,l,count=0,c[20],a[20];
int static b[20]={0};
clrscr();
scanf("%d %d",&m,&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
if(m==1)
{
for(i=1;i<n;i++)
for(j=0;j<i;j++)
{if(a[i]>a[j])
b[i]++;}
for(i=0;i<n;i++)
printf("%d",b[i]);
}
if(m==2)
{
for(i=0;i<n;i++)
b[i]=i;
for(i=n-1;i>=0;i--)
for(j=i;j>=0;j--)
{for(k=j-1,count=0;k>=0;k--)
if(b[j]>b[k]) count++;
if(count==a[i])
{
c[i]=b[j];
for(l=j;l<i;l++)
b[l]=b[l+1];
}
}
for(i=0;i<n;i++) printf("%d ",c[i]);
}
getch();
}
[[italic] 本帖最后由 VanGogh 于 2007-12-15 15:20 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
路过。。。。。。。。。。。。
----------------解决方案--------------------------------------------------------
吃完饭写了第二个的 试试吧 在一楼
----------------解决方案--------------------------------------------------------
用一个简易的线段树或者树状数组可以把算法复杂度降至O(nlogn)
----------------解决方案--------------------------------------------------------
求教一个C语言的问题!拜托!!!
你是一名室内装潢工程队的配料员。你的伙伴们喜欢采用“之”字型的方式铺大理石地砖,图案如下:1
2
6
7
15
3
5
8
14
16
4
9
13
17
22
10
12
18
21
23
11
19
20
24
25
学了 C 语言以后,你决定编写一个程序,帮助你的同伴生成这样的图形。
输入:
方阵N的大小。
输出
方阵。
----------------解决方案--------------------------------------------------------