笨小熊 -- ACM解决方法
生活随笔
收集整理的這篇文章主要介紹了
笨小熊 -- ACM解决方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
描述
笨小熊的詞匯量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經(jīng)試驗證明,用這種方法去選擇選項的時候選對的幾率非常大! 這種方法的具體描述如下:假設maxn是單詞中出現(xiàn)次數(shù)最多的字母的出現(xiàn)次數(shù),minn是單詞中出現(xiàn)次數(shù)最少的字母的出現(xiàn)次數(shù),如果maxn-minn是一個質數(shù),那么笨小熊就認為這是個Lucky Word,這樣的單詞很可能就是正確的答案。輸入
第一行數(shù)據(jù)N(0<N<100)表示測試數(shù)據(jù)組數(shù)。 每組測試數(shù)據(jù)輸入只有一行,是一個單詞,其中只可能出現(xiàn)小寫字母,并且長度小于100。輸出
每組測試數(shù)據(jù)輸出共兩行,第一行是一個字符串,假設輸入的的單詞是Lucky Word,那么輸出“Lucky Word”,否則輸出“No Answer”; 第二行是一個整數(shù),如果輸入單詞是Lucky Word,輸出maxn-minn的值,否則輸出0樣例輸入
2 error olympic樣例輸出
Lucky Word 2 No Answer 0===============================================================================================================
思路及易錯點
在記錄最小值時不能直接在讀取數(shù)據(jù)時直接比較最小值,例如:hhhhjjj , 讀取第一個h時會將min賦值為1,之后在比較時最小值始終為1,不會得到實際的最小值3.===============================================================================================================
代碼如下
#include <stdio.h> #include <string.h>int zhishu (int n) {int i;if (n==0 || n==1)return 0;for (i = 2 ; i < n ; i++)if (!(n % i))break;if (!(i-n))return 1;elsereturn 0; }int main (void) {int x,i,n,a[26];int max,min;char ch[100];scanf("%d",&x);while(x--){max=0;min=100;for(i=0;i<26;i++)a[i] = 0;scanf("%s",ch);for(i=0; i<strlen(ch); i++) //不能直接在此循環(huán)中找最值a[ch[i]-'a']++;for(i=0;i<26;i++) //只能再用一次循環(huán)排序{if (a[i]==0)continue;if(max < a[i])max = a[i];if(min > a[i])min = a[i];}if(zhishu(max-min))printf("Lucky Word\n%d\n",max-min);elseprintf("No Answer\n0\n");}return 0; }總結
以上是生活随笔為你收集整理的笨小熊 -- ACM解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DNF20级能拜师吗
- 下一篇: 括号配对问题 -- ACM解决方法