ZOJ (pintia.cn)题目来源链接网站
Sample Input
3
2 Alice
Alice Bob
4 inu
inu neko usagi kizune
4 cat
dog cat rabbit fox
Sample Output
Bob
usagi
fox
题目分析:T个测试案例,n个孩子,name目标孩子的名字存放到名字数组a【0】中,几个孩子围成一个圈需要找出目标孩子所站位置对面的孩子,并输出他的名字。
解题代码1:
#include <stdio.h>
#include <string.h>
main()
{
int T,n,j,in=0,out=0;
char a[102][21];
scanf("%d",&T);
for(;T>0;T--)
{
scanf("%d",&n);
for(j=0;j<=n;j++)
{
scanf("%s",&a[j]);
if(strcmp(a[j],a[0])==0)
{
in=j;
out=in+(n/2);
if(out>n)
out=out%n;
}
}
printf("%s\n",a[out]);
}
}
反思记录解题过程出现问题:
1数组的范围初始定义定义小了,导致答案总是不对
2位置的循环,用求余的方法算位置,最开始想的是用if,else,来分别考虑情况,目标孩子站的位子数小于等于n/2时和大于时两种情况,但是后来老师说用求余更好,我选择用了求余,写了这句out=(in+(n/2))%n;但是过程中输出的名字有的对有的不对,后来发现,只是单纯这样写,当out=n时,求余出来等于0,所以后来加了if语句分了两种情况。
分享,记录和求学,有大神看到可以给些建议和指导,看到的有缘人也可以和我交流其他题目和经验。