1185:单词排序

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 3474 通过数: 1685
【题目描述】
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字典序输出这些单词,要求重复的单词只输出一次。(区分大小写)

【输入】
一行单词序列,最少1个单词,最多100个单词,每个单词长度不超过50,单词之间用至少1个空格间隔。数据不含除字母、空格外的其他字符。

【输出】
按字典序输出这些单词,重复的单词只输出一次。

【输入样例】
She wants to go to Peking University to study Chinese
【输出样例】
Chinese
Peking
She
University
go
study
to
wants

这题表述有问题,题目说是一行单词序列,但是我编程序接收一行单词序列时,样例都能过,自己输入英文句子,也能过。提交时所有点都是“答案错误”(看我的程序一代码)。后来,问了别人,别人告诉我,是要接收多行单词,把程序改了一下,反复接收一行单词,并记录,就过了。(看我的程序二代码)
区别就是把getline(cin,danci)放在while循环中,反复接收单词序列,直到文件结束,停止接收(因为测试OJ是通过文件进行输入输出的)。

希望后面的人不要跟我一样被题目描述坑了哦。

程序一(所有点提示答案错误):

//1185:单词排序
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
char a[101][51];
int len,i,k=0,j;
string danci;void paixu(char a[101][51],int start,int end) //自定义排序函数,对字二维符串数组排序
{char tmp[51];int i,j;for(i=end-1;i>=1;i--){for(j=start;j<=i;j++){if(strcmp(a[j],a[j+1])>0) //如果字典序逆序,则交换 {strcpy(tmp,a[j]); //将a[j]字符串复制到临时字符串tmp中 strcpy(a[j],a[j+1]);strcpy(a[j+1],tmp);}}}return;}
int main()
{bool flag=false;//是否遇到一个新单词,false表示没有遇到,true表示遇到了 memset(a,0,sizeof(a));getline(cin,danci);//接收单词序列,碰到换行结束,可以接收空格 danci=" "+danci+" ";//在单词序列前后加空格len=danci.length();j=0;for(i=0;i<len;i++){if(danci[i]==' ') //碰到空格,表明不是一个单词 {flag=false;//a[k][j]='\0';}else //碰到的不是空格时 {if(flag==false){k++;//新单词 j=0;flag=true;a[k][j]=danci[i];j++;}else //单词中间字母 {a[k][j]=danci[i];j++;}  } }paixu(a,1,k);//对记录1至k的单词按字典序升序排序 for(i=1;i<=k;i++){if(strcmp(a[i],a[i-1])==0)//如果和前面字符串相等,则不输出,相同字符串输出一次continue; cout<<a[i]<<endl;}return 0;
}

程序二(所有点通过):

//1185:单词排序
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
char a[101][51];
int len,i,k=0,j;
string danci;void paixu(char a[101][51],int start,int end) //自定义排序函数,对字二维符串数组排序
{char tmp[51];int i,j;for(i=end-1;i>=1;i--){for(j=start;j<=i;j++){if(strcmp(a[j],a[j+1])>0) //如果字典序逆序,则交换 {strcpy(tmp,a[j]); //将a[j]字符串复制到临时字符串tmp中 strcpy(a[j],a[j+1]);strcpy(a[j+1],tmp);}}}return;}
int main()
{bool flag=false;//是否遇到一个新单词,false表示没有遇到,true表示遇到了 memset(a,0,sizeof(a));while(getline(cin,danci))//反复接收单词序列(接收多行单词序列),碰到换行结束,可以接收空格 {danci=" "+danci+" ";//在单词序列前后加空格len=danci.length();j=0;for(i=0;i<len;i++){if(danci[i]==' ') //碰到空格,表明不是一个单词 {flag=false;//a[k][j]='\0';}else //碰到的不是空格时 {if(flag==false){k++;//新单词 j=0;flag=true;a[k][j]=danci[i];j++;}else //单词中间字母 {a[k][j]=danci[i];j++;} } } }paixu(a,1,k);//对记录1至k的单词按字典序升序排序 for(i=1;i<=k;i++){if(strcmp(a[i],a[i-1])==0)//如果和前面字符串相等,则不输出,相同字符串输出一次continue; cout<<a[i]<<endl;}return 0;
}

信息奥赛一本通1185:单词排序(OJ题目描述有问题)相关推荐

  1. 信息学奥赛一本通 1185 单词排序

    [题目描述] 输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字典序输出这些单词,要求重复的单词只输出一次.(区分大小写) [输入] 一行单词序列,最少1个单词,最多100个单词,每个单词长 ...

  2. 信息学奥赛一本通 1185:单词排序 | OpenJudge NOI 1.10 10:单词排序

    [题目链接] ybt 1185:单词排序 OpenJudge NOI 1.10 10:单词排序 [题目考点] 1. 排序 [君义精讲]排序算法 2. 字符串比较 字符数组比较: char s1[N], ...

  3. 【算法•日更•第十二期】信息奥赛一本通1585:【例 1】Amount of Degrees题解

    废话不多说,直接上题: 1585: [例 1]Amount of Degrees 时间限制: 1000 ms         内存限制: 524288 KB 提交数: 130     通过数: 68 ...

  4. 信息奥赛一本通 三角形最佳路径问题 (1288) 题解

    信息奥赛一本通 三角形最佳路径问题 (1288) 题解 时间限制: 1000 ms 内存限制: 65536 KB 题目描述 如下所示的由正整数数字构成的三角形: 7 3 8 8 1 0 2 7 4 4 ...

  5. 信息奥赛一本通的递推练习

    信息奥赛一本通的递推练习 递推与动态规划 1313:位数问题 1314:过河卒 1194:移动路线 1196:踩方格 递推与动态规划 递推解决的问题中满足最优化原理的也是属于动态规划范畴 1313:位 ...

  6. 2038:最大数位置(题目来源于信息奥赛一本通官网)

    2038:[例5.5]最大数位置 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 4876     通过数: 3175 [题目描述] 输入n 个整数,存放在数组a[ ...

  7. HOJ 系统常用功能介绍 部署快速入门 c++ python java编程语言在线自动评测 信息奥赛一本通 USACO GESP 洛谷 蓝桥 CSP NOIP题库

    技术支持微 makytony 服务器配置需求 腾讯云 2H4G 5M 60GB 轻量应用服务器  承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛. 系统镜像选 ...

  8. 信息奥赛一本通1486: CH 6202 黑暗城堡 最短路径生成树计数

    1486:黑暗城堡 [题目描述] 知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 Di为如果所有的通道都被修建,第 i 号房间与第 1 ...

  9. 信息奥赛一本通(1180:分数线划定)——插入排序

    1180:分数线划定 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 15750     通过数: 7408 [题目描述] 世博会志愿者的选拔工作正在 A 市如火如 ...

最新文章

  1. spring boot集成webservice接口
  2. 用php程序能消除水印吗,php——水印
  3. 一行c语言代码,打钩的一行c语言代码解释一下,谢谢,详细解释绝对最佳
  4. grandle下载安装图解
  5. 《树莓派Python编程入门与实战》——2.1 了解Linux
  6. 前端遮罩层实现_cocos creator--游戏开奖功能组件《刮刮卡》特效实现
  7. 通过 Socket 实现 UDP 编程 入门
  8. sql 语句 查询结果赋值变量_RationalDMIS 7.1 变量赋值 ASSIGN语句
  9. 电脑应该如何升级bios版本
  10. VC2015解决方案管视图中没有外部依赖项、头文件、源文件、资源文件,提供一个本人解决的办法以及总结网上零零散散的方法给后来者提供一个参考
  11. yum install brctl报错
  12. 物权法全文内容有哪些呢-广告外链_广告策划包含了哪些内容?
  13. linux 如何删除gpt分区,Centos 7下如何删除GPT分区
  14. java 开发脚本视频_你写脚本,AI自动剪视频:13分钟完成剪辑师7小时创作
  15. 邹城机器人产业园出租_华丰机器人产业园写字楼出租出售租赁出租我们是专
  16. nova3安装android10系统,一招搞定安卓机“久用必卡”顽疾:华为nova3i配备6GB超大运存...
  17. MOOC人工智能原理学习笔记4——有信息搜索
  18. Java Eclipse JRE 1.8.0_25下载
  19. 云计算如何推动园区建设智慧升级?
  20. MS Office2016留下的坑

热门文章

  1. phpstorm mac快捷键
  2. 看云笔记应用场景介绍
  3. 广义pareto分布_高记录值下广义Pareto分布参数的随机估计及垂直概率密度检验
  4. Docker--docker 卷插件
  5. AI数字人直播系统源码如何搭建?让能拥有24小时数字人直播间!
  6. LightTools 模拟不同折射率介质间光学界面的反射率和透射率问题
  7. [removed]window.close()不管用?
  8. 数据模型:数字化转型的核心能力
  9. 一次生产环境大量CLOSE_WAIT导致服务无法访问的定位过程
  10. python手机版iphone-Python实现抢购IPhone手机