信息学奥赛一本通(1185:单词排序)
1185:單詞排序
時間限制: 1000 ms ??? ??? 內存限制: 65536 KB
提交數: 11964 ??? 通過數: 6009
【題目描述】
輸入一行單詞序列,相鄰單詞之間由1個或多個空格間隔,請按照字典序輸出這些單詞,要求重復的單詞只輸出一次。(區分大小寫)
【輸入】
一行單詞序列,最少1個單詞,最多100個單詞,每個單詞長度不超過50,單詞之間用至少1個空格間隔。數據不含除字母、空格外的其他字符。
【輸出】
按字典序輸出這些單詞,重復的單詞只輸出一次。
【輸入樣例】
She wants to go to Peking University to study Chinese【輸出樣例】
Chinese Peking She University go study to wants【參考代碼】
#include <stdio.h>
#include <string.h>
char s[5001];
char a[100][51];
char t[51];
void cmpsort(int n)
{
?? ?int i,j;
?? ?for(i=1;i<n;i++)
?? ?{
?? ??? ?for(j=i+1;j<=n;j++)
?? ??? ?{
?? ??? ??? ?if(strcmp(a[i],a[j])>0)
?? ??? ??? ?{
?? ??? ??? ??? ?strcpy(t,a[i]);
?? ??? ??? ??? ?strcpy(a[i],a[j]);
?? ??? ??? ??? ?strcpy(a[j],t);
?? ??? ??? ?}?
?? ??? ?}
?? ?}
}
int main()
{
?? ?int i,j,n=0,flag=0;
?? ?while(gets(s)!=NULL)
?? ?{
?? ??? ?j=0;
?? ??? ?for(i=0;s[i]!='\0';i++) ?//將單詞分割存放到a數組中?
?? ??? ?{
?? ??? ??? ?if(s[i]!=' ')
?? ??? ??? ?{
?? ??? ??? ??? ?if(flag==0) ?//單詞開始?
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?flag=1;
?? ??? ??? ??? ??? ?n++; ? ? //單詞數量?
?? ??? ??? ??? ??? ?a[n][j]=s[i];
?? ??? ??? ??? ??? ?j++;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?a[n][j]=s[i];
?? ??? ??? ??? ??? ?j++;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?flag=0;
?? ??? ??? ??? ?j=0;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?cmpsort(n);
?? ??? ?for(i=1;i<=n;i++)
?? ??? ?{
?? ??? ??? ?if(strcmp(a[i],a[i-1])==0)
?? ??? ??? ??? ?continue;
?? ??? ??? ?printf("%s\n",a[i]);
?? ??? ?}
?? ?}
?? ?return 0;
}
http://ybt.ssoier.cn:8088/problem_show.php?pid=1185
?
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的信息学奥赛一本通(1185:单词排序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通(1211:判断元素是否
- 下一篇: 信息学奥赛一本通(1163:阿克曼(Ac