hdu 5510 Bazinga (字串水題)
阿新 • • 發佈:2018-12-17
題意很簡單:輸入n 然後輸入n個字串,求最大的i, 要求1 ~ i-1 中至少有一個串不是i的子串
思路:直接遍歷就行,兩個for迴圈巢狀(注意,都是自上而下開始),用strstr判斷是不是子串,若是,就打上標記(此串相當於廢棄了,即不需要再判斷),這樣就減少了對strstr的呼叫。針對這道水題的資料來說,這樣做大大減少了時間,讓我們逃出了TLE的泥沼
程式碼:
#include<stdio.h> #include<string.h> char ch[501][2002]; int main() { int T; scanf("%d",&T); int n; for(int i=0 ; i<T; i++) { scanf("%d",&n); for(int j=0 ; j<n; j++) { scanf("%s",ch[j]); } int idx[501]= {}; int ans=-1; int f=1; for(int l=1; l<n; l++) { for(int k=0 ; k<l; k++) { if(idx[k]) continue; if(!strstr(ch[l],ch[k])) { ans=l+1; } else { idx[k]=1; } } } printf("Case #%d: %d\n",i+1,ans); } return 0; }
2018年10月25日,每週 發五篇解題報告的第一篇。