D. 实验7_21_编码、解码数组
设有一个整型数组a中存放n个互不相同的整数,a中元素取值范围为0到n-1。a数组的编码定义如下:a[0]的编码为0,放入b[0];ai的编码为在a[0]、a[1]、…、a[i-1]中比a[i]的值小的数的个数,放入b[i]。例如:a[6]={4,3,0,5,1,2}时,则b[6]={0,0,0,3,1,2}。你有两个任务,任务一是编码,即已知n与数组a,求数组b;任务二是解码,即已知n与数组b,求数组a。
输入与输出要求:首先输入两个整数n和flag。n代表数组元素的个数(1<=n<=100),flag代表任务类型(flag=1代表编码任务,flag=2代表解码任务)。然后是n个整数,当flag=1时,这n个数即代表数组a的内容;当flag=2时,这n个数即代表数组b的内容。
输出n个整数,当flag=1时即为编码后数组b的内容,当flag=2时,即为解码后数组a的内容。每个整数用空格分开,最后一个整数后是换行符。
程序运行效果:
Sample 1:
5↙
1↙
2 1 3 0 4↙
0 0 2 0 4
Sample 2:
8↙
2↙
0 1 2 0 1 1 4 5↙
3 6 7 0 2 1 4 5
#include
int minCount(int a[], int len);
int main()
{
int n, flag, a[100], i, j, b[100] = { 0 };
scanf("%d", &n);
scanf("%d", &flag);
if (flag == 1)
{
for (i = 0;
i < n;
i++)
scanf("%d", &a[i]);
for (i = 1;
i < n;
i++)
{
b[i] = minCount(a, i);
}
for (i = 0;
i < n;
i++)
printf("%d ", b[i]);
printf("\n");
}
else if (flag == 2)
{
for (i = 0;
i < n;
i++)
scanf("%d", &b[i]);
a[n - 1] = b[n - 1];
int num[100] = { 0 },k,count;
for (k = 0;
k < n-1;
k++)
num[k + 1] = num[k] + 1;
for (k = 0;
k < n;
k++)
{
if (num[k] == b[n - 1])
{
for (count = k;
count < n;
count++)
num[count] = num[count + 1];
}
}for (j = n - 2;
j >= 0;
j--)
{
int count1 = 0;
count1 = b[j];
a[j] = num[count1];
for (k = 0;
k < n;
k++)
{
if (k == b[j])
{
for (count = k;
count < n;
count++)
num[count] = num[count + 1];
}
}
}
for (i = 0;
i < n;
i++)
printf("%d ", a[i]);
printf("\n");
}
return 0;
}
int minCount(int a[], int len)
{
int count = 0, i;
for (i = 0;
i < len;
i++)
{
if (a[i] < a[len])
count += 1;
}
return count;
}
【D. 实验7_21_编码、解码数组】
推荐阅读
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- Shell-Bash变量与运算符
- 清明,是追思、是传承、是感恩。
- 牛人进化+|牛人进化+ 按自己的意愿过一生
- 七老修复好敏感、角质层薄、红血丝
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 螃蟹和这些食物同吃,轻则腹泻、重则中毒!要小心哦~
- 八、「料理风云」