ACM 題目 1487: [藍橋杯][演算法提高VIP]不同單詞個數統計
阿新 • • 發佈:2020-10-05
題目描述
編寫一個程式,輸入一個句子,然後統計出這個句子當中不同的單詞個數。例如:對於句子“one little two little three little boys”,總共有5個不同的單詞:one, little, two, three, boys。
說明:(1)由於句子當中包含有空格,所以應該用gets函式來輸入這個句子;(2)輸入的句子當中只包含英文字元和空格,單詞之間用一個空格隔開;(3)不用考慮單詞的大小寫,假設輸入的都是小寫字元;(4)句子長度不超過100個字元。 輸入 輸入只有一行,即一個英文句子。 輸出 輸出只有一行,是一個整數,表示句子中不同單詞的個數。 樣例輸入
說明:(1)由於句子當中包含有空格,所以應該用gets函式來輸入這個句子;(2)輸入的句子當中只包含英文字元和空格,單詞之間用一個空格隔開;(3)不用考慮單詞的大小寫,假設輸入的都是小寫字元;(4)句子長度不超過100個字元。 輸入 輸入只有一行,即一個英文句子。 輸出 輸出只有一行,是一個整數,表示句子中不同單詞的個數。 樣例輸入
one little two little three little boys
樣例輸出
5
思路:
strlen的功能是統計字串s的長度(unsigned int 型)
用一個same方法去判斷兩兩字串是否一樣
然後對於使用者輸入的字串反覆呼叫這個函式計算整個字串有多少個不相同的字元
程式碼:
#include<stdio.h> int same(char x[],char y[]) { int i,j; if(strlen(x)!=strlen(y)) return 0; for(i=0;i<strlen(x);i++) { if(x[i]!=y[i]) break; } if(i<strlen(x)) return 0; else return 1; } int main() { char x[200][200]; int i,j=0,k,cnt=0; while(~scanf("%s",x[j++])); for(i=0;i<j;i++) { for(k=i+1;k<j;k++) { if(same(x[k],x[i])) break; } if(k<j) continue; else cnt++; } printf("%d",cnt-1);}