EOJ 3124. 单词表
2018-02-09 11:53
148 查看
题目链接:EOJ 3124.单词表
思路:搞清楚每个单词的截取,按字典序排序,就不难。
AC代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define INF 501
char word[INF][50];
int s=0;
void select(char a[]) {
s=0;
int i,j,len,start;
len=strlen(a);
start=0;
for(i=0; i<len; i++) {
if(a[i]<='z'&&a[i]>='a') {
continue;
}
else if(start<i)//每个单词结束的时候要判断start的位置,防止读入分隔符
{
for(j=start; j<i; j++) {
word[s][j-start]=a[j];
}
s++;
start=i+1;
}
else
start=i+1;
}
if(start<len)
{
for(j=start; j<i; j++) {
word[s][j-start]=a[j];
}
s++;
start=i+1;
}
char tmp[INF];
for(i=0; i<s; i++) {
for(j=i+1; j<s; j++) {
if(strcmp(word[i],word[j])>0) {
strcpy(tmp,word[i]);
strcpy(word[i],word[j]);
strcpy(word[j],tmp);
}
}
}
strcpy(tmp,word[0]);
printf("%s",word[0]);
for(i=1; i<s; i++) {
if(strcmp(tmp,word[i])==0) {
continue;
} else {
strcpy(tmp,word[i]);
printf(" %s",word[i]);
}
}
printf("\n");
}
int main() {
int i,j,t;
char sentence[INF];
scanf("%d",&t);getchar();
for(i=0; i<t; i++) {
for(int h=0;h<501;h++)//清空
for(j=0;j<50;j++)
word[h][j]='\0';
gets(sentence);
printf("case #%d:\n",i);
select(sentence);
}
return 0;
}
思路:搞清楚每个单词的截取,按字典序排序,就不难。
AC代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define INF 501
char word[INF][50];
int s=0;
void select(char a[]) {
s=0;
int i,j,len,start;
len=strlen(a);
start=0;
for(i=0; i<len; i++) {
if(a[i]<='z'&&a[i]>='a') {
continue;
}
else if(start<i)//每个单词结束的时候要判断start的位置,防止读入分隔符
{
for(j=start; j<i; j++) {
word[s][j-start]=a[j];
}
s++;
start=i+1;
}
else
start=i+1;
}
if(start<len)
{
for(j=start; j<i; j++) {
word[s][j-start]=a[j];
}
s++;
start=i+1;
}
char tmp[INF];
for(i=0; i<s; i++) {
for(j=i+1; j<s; j++) {
if(strcmp(word[i],word[j])>0) {
strcpy(tmp,word[i]);
strcpy(word[i],word[j]);
strcpy(word[j],tmp);
}
}
}
strcpy(tmp,word[0]);
printf("%s",word[0]);
for(i=1; i<s; i++) {
if(strcmp(tmp,word[i])==0) {
continue;
} else {
strcpy(tmp,word[i]);
printf(" %s",word[i]);
}
}
printf("\n");
}
int main() {
int i,j,t;
char sentence[INF];
scanf("%d",&t);getchar();
for(i=0; i<t; i++) {
for(int h=0;h<501;h++)//清空
for(j=0;j<50;j++)
word[h][j]='\0';
gets(sentence);
printf("case #%d:\n",i);
select(sentence);
}
return 0;
}
相关文章推荐
- EOJ 3124 单词表(排序)
- EOJ 3018 查找单词【指针练习】
- 英语单词积累
- 剑指offer 面试题42—翻转单词顺序VS左旋转字符串
- 学电脑必懂的53个英文单词和缩写
- 英语单词的词性
- 将字符串按照单词单位逆序排列输出
- 华为机试—字符串中找出单词排序
- ACM题目里遇到的单词
- 浅析Python中将单词首字母大写的capitalize()方法
- 单词2
- windows下使用aspell开启emacs的单词拼写检查功能
- 9.24 英语单词
- js查找一篇英文文章中出现频率最高的单词
- 10.7 英文单词
- vim笔记 查找同时包含多个单词的行
- 华北计算所其中一道机试题,逆转字符串,但是单词顺序不变
- 06-3. 单词长度(15)
- 教你一眼辨别单词的方法 彻底告别中式英语
- 九度OJ-题目1361:翻转单词顺序