1. 程式人生 > >*1407笨小猴(Noip2008提高組第1題)

*1407笨小猴(Noip2008提高組第1題)

false pen 。。 max 養成 cstring || size 實現

題目鏈接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1407

一看題so easy,看題審題到寫代碼用了25分鐘,瞬間出現如下代碼,樣例輕松過,順便註釋了思路

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 char a[120];
 5 int al,maxn=0,minn=1,m=1;
 6 //m記錄字母出現的次數 
 7 bool iss(int x)
 8 {
 9     if (x==1||x==0)return false;//註意素數判斷時這一行是不可缺少的 
10 for(int i=2;i*i<=x;i++) 11 if(x%i==0)return false; 12 return true; 13 } 14 int main() 15 { 16 gets(a); 17 al=strlen(a); 18 for(int i=0;i<al-1;i++) 19 { 20 char b=a[i]; 21 for(int j=i+1;j<al;j++) 22 { 23 if(b==a[j])m++; 24 if
(m>maxn)maxn=m; 25 if(m<minn)minn=m; 26 } 27 m=1;//恢復m的初始值 28 } 29 30 //cout<<maxn<<minn; 31 //上一行用於測試讀取單詞中字母數字是否正確,如果正確將其註釋掉繼續往下寫,從而實現模塊話 32 if(iss(maxn-minn))cout<<"Lucky Word"<<endl<<maxn-minn; 33 else cout<<"
No Answer"<<endl<<"0"; 34 35 return 0; 36 }

然而。。。悲劇悄然發生。。。

技術分享圖片

what the fuck?..

默默冷靜3分鐘後發現

技術分享圖片

原來是第16行調用了gets(),代碼中卻沒有包含頭文件#include<cstdio>,wtf?wtf?wtf?

但我用dev編譯通過了,然並卵。。是什麽問題呢?

因為dev作為ide為了方便用戶使用,會默認給代碼中增加一些函數,#include<cstdio>被默認添加進去了。。

so 在本地編譯時沒有問題,但在系統端提交出現編譯錯誤,這是NOIP階段經常出現的小問題,so,兩種方式可以避免:

1.使用linux系統guide

2.平時養成頭文件與使用一一對應的好習慣

修改代碼後如下(點擊加號展開):

技術分享圖片
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 using namespace std;
 5 char a[120];
 6 int al,maxn=0,minn=1,m=1;
 7 //m記錄字母出現的次數 
 8 bool iss(int x)
 9 {
10     if (x<2)return false;//註意素數判斷時這一行是不可缺少的 
11     else
12     {
13         for(int i=2;i*i<=x;i++)
14         if(x%i==0)return false;
15     }
16     
17     return true;
18 }
19 int main()
20 {
21     gets(a);
22     al=strlen(a);
23     for(int i=0;i<al-1;i++)
24     {
25         char b=a[i];
26         for(int j=i+1;j<al;j++)
27         {
28             if(b==a[j])m++;
29             if(m>maxn)maxn=m;
30             if(m<minn)minn=m;
31         }
32         m=1;//恢復m的初始值 
33     }
34      
35     //cout<<maxn<<minn;
36     //上一行用於測試讀取單詞中字母數字是否正確,如果正確將其註釋掉繼續往下寫,從而實現模塊話 
37     if(iss(maxn-minn))cout<<"Lucky Word"<<endl<<maxn-minn;
38     else cout<<"No Answer"<<endl<<"0";
39     
40     return 0;
41 }
View Code

然而,達到AC過程是艱難曲折的:

技術分享圖片

再次修改代碼如下:

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 using namespace std;
 5 char a[120];
 6 int al,maxn=0,minn=1,m=0;
 7 //m記錄字母出現的次數 
 8 bool iss(int x)
 9 {
10     if (x<2)return false;//註意素數判斷時這一行是不可缺少的 
11     else
12     {
13         for(int i=2;i*i<=x;i++)
14         if(x%i==0)return false;
15     }
16     
17     return true;
18 }
19 int main()
20 {
21     gets(a);
22     al=strlen(a);
23     for(int i=0;i<al;i++)
24     {
25         char b=a[i];
26         for(int j=0;j<al;j++)
27         {
28             if(b==a[j])m++;
29         }
30         if(m>maxn)maxn=m;
31         if(m<minn)minn=m;
32         m=0;//恢復m的初始值 
33     }
34      
35 //    cout<<al<<maxn<<minn;
36     //上一行用於測試讀取單詞中字母數字是否正確,如果正確將其註釋掉繼續往下寫,從而實現模塊話 
37     if(iss(maxn-minn))cout<<"Lucky Word"<<endl<<maxn-minn;
38     else cout<<"No Answer"<<endl<<"0";
39     
40     return 0;
41 }

仍然是:技術分享圖片

*1407笨小猴(Noip2008提高組第1題)