7-118 敲笨鍾 (20分)****未解****

第一次代碼構思(錯誤)

一開始想的是既滿足’,‘前面的滿足ong,還滿足’.‘前面是ong的就是了。
但是忽略了一點:s[j]不可能同時是’,’ ‘.’ 這是矛盾的

#include <iostream>
using namespace std;
 
int main()
{
	int n;cin>>n;
	string s;
	getchar();
	for(int i=0;i<n;i++){
		getline(cin,s);
		for(int j=0;j<s.size();j++){
			if(s[j]==', '&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
				if(s[j]=='.'&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
					;
				}
				else{
					cout<<"Skipped";
				}
			}
		} 
	} 	
    return 0;
}

第二次代碼()

把 逗號 和 句號 分開 判斷
用一個flag變量來判斷
用 f 回溯到倒數第4個詞的結尾

#include <iostream>
using namespace std;
 
int main()
{
	int n,flag;cin>>n;
	string s;
	getchar();
	for(int i=0;i<n;i++){
		getline(cin,s);
		flag=0;
		for(int j=0;j<s.size();j++){
			if(s[j]==', '&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
				flag=1;
			}
			if(flag==1&&s[j]=='.'&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
				flag=2;
//			}
//			if(flag==2){
				int f = j;   //用 f 回溯到倒數第4個詞的結尾 
				for(int kong=0;kong<3;f--){
					if(s[f]==' ') kong++;
				}
				s.replace(f+1,j-f," qiao ben zhong."); //起始位置,長度,替換的內容
				cout<<s<<endl;
				return 0; 
			}
		} 
	} 
	if(flag!=2)cout<<"Skipped"<<endl;
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章