b转a不对
设有一个数组 int A;数组中存放的元素为0~N−1之间的整数,且A≠A(当i≠j时)。例如: N=6时,有A=(4,3,0,5,1,2) 此时,数组A的编码定义如下: A的编码为0,A的编码为:在A,A,……A中比A的值小的个数(i=1,2……N-1)∴上面数组A的编码为:B=(0,0,0,3,1,2)
输入描述
每个测试文件只包含一组测试数据,每组输入包含三行。
第一行输入整数N
;
第二行输入有两种可能:
例如:
A=(4,3,0,5,1,2)
或
B=(0,0,0,3,1,2)
其中输入中的逗号和括号都是英文状态下的。
输出描述
当输入的是A=(...),则输出其编码。
当输入的是B=(...),则输出A中的原数据。
输出数据的格式和输入数据的格式是一样的。
#include<stdio.h>
int a,b,flag={0};
int main()
{
int n,i,j,k;
char ch;
scanf("%d",&n);
getchar();
scanf("%c",&ch);
scanf("=(");
scanf("%d",&a);
for(i=1;i<n;i++)
{
scanf(",%d",&a);
a++;
}
scanf(")");
if(ch=='A')
{
for(i=1;i<n;i++)
{
int num=0;
for(j=0;j<i;j++)
{
if(a>a)
{
num++;
}
}
b=num;
}
printf("B=(%d",b);
for(i=1;i<n;i++)
{
printf(",%d",b);
}
printf(")");
}
else
{
for(i=n-1;i>=0;i--)
{
j=0,k=0;
do
{
if(flag==0)
{
j++;
}
k++;
}while(j<a);
flag[--k]=1;
b=k;
}
printf("A=(%d",b);
for(i=1;i<n;i++)
{
printf(",%d",b);
}
printf(")");
}
return 0;
}
别乱改字母,B解码成A为啥不对 首先,我们需要根据输入的字符判断是输入的是数组A还是数组B。假设输入的是数组A,则我们需要根据A计算出对应的数组B。如果输入的是数组B,则直接输出数组A即可。
以下是完整代码的示例:
#include <stdio.h>
int main() {
int n, i, j, a;
char ch;
scanf("%d", &n);// 输入数组的长度
getchar();
scanf("%c", &ch);
if (ch == 'A') {// 如果输入的是数组A,则计算出数组B并输出
int B;
for (i = 0; i < n; i++) {
scanf("%d,", &a);
B = 0;// 初始化数组B的元素为0
for (j = 0; j < i; j++) {
if (a > B) {
B += 1;// 如果a比B大,则B递增
}
}
}
// 输出数组B
printf("B=(");
for (i = 0; i < n - 1; i++) {
printf("%d,", B);
}
printf("%d)\n", B);
} else if (ch == 'B') {// 如果输入的是数组B,则直接输出数组A
int A, B;
for (i = 0; i < n; i++) {
scanf("%d,", &B);
}
// 根据数组B计算出数组A
for (i = 0; i < n; i++) {
A = 0;
for (j = 0; j < i; j++) {
if (B < B) {
A += 1;
}
}
}
// 输出数组A
printf("A=(");
for (i = 0; i < n - 1; i++) {
printf("%d,", A);
}
printf("%d)\n", A);
}
return 0;
}
这段代码中,我们先判断输入的是数组A还是数组B,然后定义两个数组A和B。如果输入的是数组A,则依次读取A的元素,并根据A计算出对应的数组B。最后输出数组B。如果输入的是数组B,则依次读取B的元素,并根据B计算出对应的数组A。最后输出数组A。
希望这段代码可以帮助到你!如果还有疑问,请随时提问。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页:
[1]