编码问题

   设有一个整形数组 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,则表示根据编码反求数组)
    数组个数 
    数组或数组编码元素

输出:
    数组编码、或数组本身(元素之间以空格分隔)

#include<stdio.h>
main()
{int a,b,i,y[10],d[10]={0},j,k,m,n=0;
scanf("%d%d",&a,&b);
for(i=0;i<b;i++)
scanf("%d",&y[i]);
if(a==1)
{for(j=0;j<b;j++)
for(k=0;k<j;k++)
if(y[k]<y[j]) d[j]++;
}
else {for(j=b-1;j>0;j--)
{for(k=b-1;k>=0;k--)
{n=0;
for(m=0;m<k;m++)
   {if(y[m]>=0)n++;}
if(y[k]==n){d[k]=j;y[k]=-1;break;}
if(k==0) {d[k]=j;y[k]=-1;}
}
}
}
for(j=0;j<b-1;j++)
printf("%d ",d[j]);
printf("%d\n",d[b-1]);
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值