题目描述
设有一个数组 A:ARRAY[0…N-1] OF INTEGER;数组中存放的元素为0~N-1之间的整数,且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中的原数据。
输入
每个测试文件只包含一组测试数据,每组输入包含三行。
第一行输入整数N;
第二行输入有两种可能:
例如:
A=(4,3,0,5,1,2)
或
B=(0,0,0,3,1,2)
其中输入中的逗号和括号都是英文状态下的。
输出
当输入的是A=(…),则输出其编码。
当输入的是B=(…),则输出A中的原数据。
输出数据的格式和输入数据的格式是一样的。
样例输入
6
A=(4,3,0,5,1,2)
样例输出
B=(0,0,0,3,1,2)
思路
给出数组A来求数组B的话,就是把数组A里的每个数据都和前面的数对比,如果大于前面的数计数器就加一,最后把计数器的结果放到数组B中;
给出B数组来求A数组的话,就是把数组B里的每个数据都和前面的数对比(为了方便我在代码里都是输入数组A,输出数组B),如果小于等于前面的数,前面的数加一。
源程序
#include <stdio.h>
int a[50]={
0},b[50]={
0};
int main()
{
char x;
int