传话游戏经典句子题目

3373人阅读
时间限制: 1000ms 内存限制: 256MB
Alice和Bob还有其他几位好朋友在一起玩传话游戏。这个游戏是这样进行的:首先,所有游戏者按顺序站成一排,Alice站第一位,Bob站最后一位。然后,Alice想一句话悄悄告诉第二位游戏者,第二位游戏者又悄悄地告诉第三位,第三位又告诉第四位……以此类推,直到倒数第二位告诉Bob。两位游戏者在传话中,不能让其他人听到,也不能使用肢体动作来解释。最后,Bob把他所听到的话告诉大家,Alice也把她原本所想的话告诉大家。&
由于传话过程中可能出现一些偏差,游戏者越多,Bob最后听到的话就与Alice所想的越不同。Bob听到的话往往会变成一些很搞笑的东西,所以大家玩得乐此不疲。经过几轮游戏后,Alice注意到在两人传话中,有些词汇往往会错误地变成其他特定的词汇。Alice已经收集到了这样的一个词汇转化的列表,她想知道她的话传到Bob时会变成什么样子,请你写个程序来帮助她。
输入包括多组数据。第一行是整数&T,表示有多少组测试数据。每组数据第一行包括两个整数&N&和&M,分别表示游戏者的数量和单词转化列表长度。随后有&M&行,每行包含两个用空格隔开的单词&a&和&b,表示单词&a&在传话中一定会变成&b。输入数据保证没有重复的&a。最后一行包含若干个用单个空格隔开的单词,表示Alice所想的句子,句子总长不超过100个字符。所有单词都只包含小写字母,并且长度不超过20,同一个单词的不同时态被认为是不同的单词。你可以假定不在列表中的单词永远不会变化。
对于每组测试数据,单独输出一行“Case&#c:&s”。其中,c&为测试数据编号,s&为Bob所听到的句子。s&的格式与输入数据中Alice所想的句子格式相同。
1&≤&T&≤&100
小数据:2&≤&N&≤&10,&0&≤&M&≤&10&
大数据:2&≤&N&≤&100,&0&≤&M&≤&100&
ship sheep
sinking thinking
thinking sinking
the ship is sinking
tiger liar
tired tire
a tidy tiger is tired
Case #1: the sheep is thinking
Case #2: a tiny bear is bear
=======END======
我想知道如何输入做到输入一连串的string数组,以回车结束;
我代码中的处理方法是先 gets()函数获得一个char数组,再结果转换分个的char数组赋值给string;转换的时候注意空格的处理和转换成的char数组的结束标志处理‘\0’
代码如下:#include &iostream&
#include &cstdio&
#include &cstring&
#include &algorithm&
#include &cmath&
#include &string&
#include &iomanip&
string pre[105];
string las[105];
string lisen[105];
int main(int argc, char *argv[])
int t,n,m,case_num = 1;
char s[200],s1[20];
while(t--)
cin&&n&&m;
for(int i = 0; i & i++ )
cin&&pre[i]&&las[i];
cin.get();
int j = 0,k = 0;
for(int i = 0; i & strlen(s); i++)
if(s[i]==' ')
s1[k] = '\0';
lisen[j++] = s1;
s1[k++] = s[i];
s1[k] = '\0';
lisen[j++] = s1;
while(n--)
for(int i = 0; i & i++)
for(int k = 0; k & k++)
if(pre[k] == lisen[i])
//cout&&&change &&&pre[k]&&& to &&&las[k]&&
lisen[i] = las[k];
cout&&&Case #&&&case_num++&&&: &;
for(int i = 0; i & j-1; i++)
cout&&lisen[i]&&& &;
cout&&lisen[j-1]&&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:98019次
积分:2204
积分:2204
排名:第12565名
原创:120篇
评论:35条
(1)(1)(1)(1)(3)(1)(17)(21)(7)(12)(32)(6)(8)(13)
[img]/counter.php?i=3144437&c=9433624[/img] [url=]statistics history[/url] Sponsor: [url=http://www./coupons/]123Inkjets[/url] [url=http://www./coupons/123inkjets.htm]Cartridges[/url]记一次传话游戏_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
记一次传话游戏
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢2013编程之美的题目:传话游戏 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 1时,
之前想参加这个比赛的,但是能力有限,精力有限,今天心血来潮把它做了,做到现在快两点了。。。呵呵。。。代码比较粗糙,也没有把指针用上,因为我对指针方面的研究很浅,有兴趣的请帮我优化一下!非常感谢!
代码片段(2)
传话游戏.cpp&~&1KB&&&&
#include&iostream&
#include&string&
int main()
string processgame(int M,string words[][2],string sentance);
//声明进行游戏的子函数
//定义测试组数
cout&&"输入测试组数:";
//输入组数
string returnsentance[T];
for(int i=0;i&T;i++)
cout&&"输入游戏者数量和单词转换量:";
cin&&N&&M;
//输入第i组的游戏者数量和单词转换数量
string testwords[M][2]; //定义二维数组存放需要转换的单词
for(int j=0;j&M;j++)
cout&&"输入第"&&j+1&&"组单词:";
cin&&testwords[j][0]&&testwords[j][1]; //输入每组单词
cout&&"输入Alice的话:";
cin.ignore();
getline(cin,testsentance);
//输入Alice的话
returnsentance[i]=processgame(M,testwords,testsentance);
cout&&"最终Bob的话:"&&
for(int i=0;i&T;i++)
cout&&"Case #"&&i+1&&":"&&returnsentance[i]&&
string processgame(int M,string words[][2],string sentance)
for(int i=0;i&M;i++)
int num=sentance.find(words[i][0]);
if(num!=-1) sentance.replace(num,words[i][0].length(),words[i][1]);
2.&[代码][C/C++]代码&&&&
#include&iostream&
#include&string&
int main()
string processgame(int M,string words[][2],string sentance);
//声明进行游戏的子函数
//定义测试组数
cout&&"输入测试组数:";
//输入组数
string returnsentance[T];
for(int i=0;i&T;i++)
cout&&"输入游戏者数量和单词转换量:";
cin&&N&&M;
//输入第i组的游戏者数量和单词转换数量
string testwords[M][2]; //定义二维数组存放需要转换的单词
for(int j=0;j&M;j++)
cout&&"输入第"&&j+1&&"组单词:";
cin&&testwords[j][0]&&testwords[j][1]; //输入每组单词
cout&&"输入Alice的话:";
cin.ignore();
getline(cin,testsentance);
//输入Alice的话
returnsentance[i]=processgame(M,testwords,testsentance);
cout&&"最终Bob的话:"&&
for(int i=0;i&T;i++)
cout&&"Case #"&&i+1&&":"&&returnsentance[i]&&
string processgame(int M,string words[][2],string sentance)
for(int i=0;i&M;i++)
int num=sentance.find(words[i][0]);
if(num!=-1) sentance.replace(num,words[i][0].length(),words[i][1]);
开源中国-程序员在线工具:
相关的代码(2869)
其实这个使用map比较简单。。。。。
2楼:WindowsCloud 发表于
引用来自“ladiesman”的评论其实这个使用map比较简单。。。。。数据结构还不是很懂
3楼:游吟斯基 发表于
引用来自“ladiesman”的评论其实这个使用map比较简单。。。。。新手,求指教map是什么,谢谢了,大神。
开源从代码分享开始
WindowsCloud的其它代码传话游戏2_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
上传于||暂无简介
大小:1.47MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢传话游戏的题目 简单_百度知道

参考资料

 

随机推荐