以下為通過高中生程式解題系統 AC (Accepted) 的 C 語言程式參考解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | #include <stdio.h> #include <stdlib.h> #define MAX 100002 int main() { char s[MAX]; char bors[MAX]={0}; int conti[MAX]; int k,i; int big=0; scanf(" %d\n",&k); fgets(s, MAX , stdin); int end=0; while(s[end]!='\0') { if(s[end]=='\n') { s[end]='\0'; }else{ end++;} } int now=0; int time=0; for(int i=0 ; i<end; i++){ if(s[i]>='A' && s[i]<='Z'){ bors[i]='u'; } if(s[i]>='a' && s[i]<='z') { bors[i]='d'; } } int j=0; i=0; for(int p=0 ; p<end ; p++){ if(bors[i]=='d'){ do{ time++; i++; p++; }while(bors[i]=='d'); conti[j]=time; time=0; j++; } if(bors[i]=='u'){ do{ time++; i++; p++; }while(bors[i]=='u'); conti[j]=time; time=0; j++; } } int time_2 = 0; if(conti[0]>=k) { time_2++; if(conti[1]>=k)//post { time_2++; } big = time_2 ; } for(i=1; i<j ; i++){ if( time_2 ==0 && conti[i]==k) { time_2++; //self if(i>0 && conti[i-1]>=k) //pre { time_2++; } } if(time_2!=0 && conti[i]==k && conti[i+1]>=k && i+1<j)//post { time_2++; } if (time_2>big){ big = time_2 ; } if (conti[i]!=k) { time_2 = 0; } } printf("%d",big*k); return 0; } |
沒有留言:
張貼留言