Aizu Online Judge(AOJ)の過去問から、C++による提出コードの解答例です。
Introduction to Programming IよりTopic # 9のAからDまでの計4問です。
https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/9
Topic # 9 "String"
・ITP1_9_A : Finding a Word
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_A
・ITP1_9_B : Shuffle
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_B
・ITP1_9_C : Card Game
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_C
・ITP1_9_D : Transformation
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_D
僕が作成、提出したコードは、以下のとおりです。
・ITP1_9_A : Finding a Word
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_A
/* ITP1_9_A : Finding a Word https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_A 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<stdio.h> #include<string.h> #include<ctype.h> int main(void){ int i; int sum = 0; char W[11],T[1001]; scanf("%s",W); for(i=0;W[i];++i){ W[i]=tolower(W[i]); } while(1){ scanf("%s",T); if(strcmp("END_OF_TEXT", T)==0){ break; } for(i=0;T[i];++i){ T[i] = tolower(T[i]); } if(strcmp(W,T)==0){ ++sum; } } printf("%d\n",sum); return 0; }
・ITP1_9_B : Shuffle
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_B
/* ITP1_9_B : Shuffle https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_B 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ while(1){ string str; cin>>str; if(str=="-"){ return 0; } int i; cin>>i; vector<int> v(i); for(int j=0;j<i;j++){ cin>>v[j]; string s=str.substr(0,v[j]); str.erase(0,v[j]); int n=(int)str.size(); str.insert(n,s); } cout<<str<<endl; } }
・ITP1_9_C : Card Game
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_C
/* ITP1_9_C : Card Game https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_C 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; int taro=0; int hanako=0; vector<string> s(n),t(n); for(int i=0;i<n;i++){ cin>>s[i]>>t[i]; if(s[i]==t[i]){ taro+=1; hanako+=1; continue; } vector<string> v,v2; v.push_back(s[i]); v.push_back(t[i]); v2.push_back(s[i]); v2.push_back(t[i]); sort(v2.rbegin(),v2.rend()); if(v[0]==v2[0]){ taro+=3; }else{ hanako+=3; } } cout<<taro<<" "; cout<<hanako<<endl; return 0; }
・ITP1_9_D : Transformation
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_D
/* ITP1_9_D : Transformation https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_D 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ string str; cin>>str; int n; cin>>n; for(int i=0;i<n;i++){ string s; cin>>s; if(s=="replace"){ int a,b; string s2; cin>>a>>b>>s2; str.replace(a,b-a+1,s2); }else if(s=="print"){ int a,b; cin>>a>>b; for(int i=a;i<=b;i++){ cout<<str[i]; } cout<<endl; }else{ int a,b; cin>>a>>b; string sc=str.substr(a,b-a+1); reverse(sc.begin(),sc.end()); str.erase(a,b-a+1); str.insert(a,sc); } } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/