读书人

麻烦看一下有题目和代码。好像有不对

发布时间: 2012-03-22 17:43:57 作者: rapoo

麻烦看一下,有题目和代码。好像有不对的地方。
输入格式:
第一行只有一个正整数T,表示题目共有T组数据
接下来是T组数据。
每组数据第一行输入一个整数n(1<= n <= 50),
接下来有n行,每行输入一个问题que[i],表示Y第i个问的问题是什么。
每个问题最多由50个字符组成,每个问题只包含小写字母 ('a'-'z'),大写字母 ('A'-'Z'), 问号 ('?') 或者下划线('_').两个问题问题被认为相同当且仅当组成问题的所有字符一一对应 相同。

输出格式
对于每组数据输出一个整数,表示所有可能的回答的组合的方案数。
输入样例
3
3
How_are_you_doing?
How_do_you_like_our_country?
How_are_you_doing?
1
Whazzup?
4
Do_you_like_my_story?
Do_you_like_my_story
DO_YOU_LIKE_MY_STORY?
Do__you__like__my__story?

输出样例
4
2
16

对于第一组数据,一个有四种可能的回答组合
"Yes", "Yes", "Yes";
"Yes", "No", "Yes";
"No", "Yes", "No";
"No", "No", "No".

运行结果是对了,就是通不过。

#include"stdio.h"
#include"string.h"
#include"math.h"
main()
{
int T, n, i, j, t;
int result[50];
long cn;
char ch[51], que[50][51];
scanf("%d", &T);
for(t=0;t<T;t++) //处理T组数据
{
scanf("%d",&n);
gets(ch); //输入n后的任何非数字都被认为是数据中的问题(和n在同一行),所以需要把这些字符当作是与下面的问题的隔离符
for(i=0; i<n; i++) //处理一组数据中的n个问题
gets(que[i]);
cn=(long)pow(2,n);
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(strcmp(que[i], que[j])==0)
cn/=2;
result[t]=cn;
}
for(t=0; t<T; t++) printf("%ld\n",result[t]);
}



[解决办法]
当你输入
ddd?
ddd?
eee?
ddd?
你的输出是2,但实际上是4.。。所以有问题

读书人网 >C++

热点推荐