为什么自己编译器上能跑起来,结果也跟示例输出的一模一样,但是在洛谷上就只能过一个测试点呢O.o,诚邀各位佬来给我解惑,感谢大家!
输出是这样的
码源是这样
#include<stdio.h>
int dushu(char ch_1,int num_1,char ch_2,int num_2);
int banyinshu(char ch_1,int num_1,char ch_2,int num_2);
int main(void)
{
int T; scanf("%d",&T);
int i;
int n=0;
char ch_1,ch_2;
int num_1,num_2;
int dushucha[T];
int banyinshucha[T];
for(i=0;i<T;i++)
{
scanf(" %c%d %c%d",&ch_1,&num_1,&ch_2,&num_2);
{
dushucha[n]=dushu(ch_1,num_1,ch_2,num_2);
banyinshucha[n]=banyinshu(ch_1,num_1,ch_2,num_2);n++;
}
}
for(i=0;i<T;i++)
printf("%d %d\n",dushucha[i],banyinshucha[i]);
return 0;
}
int dushu(char ch_1,int num_1,char ch_2,int num_2 )
{
int n,n1,n2;
char canzhao[7]={'C','D','E','F','G','A','B'};
for(n=0;n<7;n++)
{
if(canzhao[n]==ch_1)
n1=n;
if(canzhao[n]==ch_2)
n2=n;
}
if(num_1==num_2)
{
////字母相同,数字相同
if(ch_1==ch_2)
return 1;
//字母相同,数字不同
else return n2-n1+1 ;
}
else
{
//字母不同,数字不同
if(n2<n1)
return 8+7*(num_2-num_1-1)+(n2-n1);
else
return 8+7*(num_2-num_1-1)+(n2-n1);
}
}
int banyinshu(char ch_1,int num_1,char ch_2,int num_2)
{
int n,n1,n2;
char canzhao[12]={'C','0','D','0','E','F','0','G','0','A','0','B'};
for(n=0;n<12;n++)
{
if(canzhao[n]==ch_1)
n1=n;
if(canzhao[n]==ch_2)
n2=n;
}
if(num_1==num_2)
return n2-n1;
else
{//因为右边的一定大于等于左边
if(ch_1==ch_2)
return 12*(n2-n1);
else
{
if(n1>n2)
return 12*(num_2-num_1)+n2-n1;
else
return 12*(num_2-num_1)+n2-n1;
}
}
}