您的位置:首页 > 其它

UVA - 489 Hangman Judge :模拟···WA了N次

2016-06-25 20:00 295 查看
书中代码

先写框架,再写细节。

先写主程序,再实现函数本身。

我还没习惯这种写法···

#define LOCAL
#include <set>
#include <map>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <vector>
#include <cstring>
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;

string S1,S2;
int lose,win;
int chance,L;

void guess(char c)
{
int bad=1;
for(int j=0; j<S1.length(); j++){
if(c==S1[j]){ L--; S1[j]=' '; bad=0; }
}
if(bad) --chance;
if(!chance) lose=1;
if(!L) win=1;
}

int main()
{
#ifdef LOCAL
//freopen("in1.txt","r",stdin);
ifstream cin("in1.txt");
#endif

int Round;
while(cin>>Round && Round!=-1){
cout<<"Round "<<Round<<endl;
lose = win =0;
chance = 7;
cin>>S1>>S2;
L=S1.length();
for(int i=0; i<S2.length(); i++){
guess(S2[i]);
if(win || lose) break;
}
if(lose) cout<<"You lose."<<endl;
else if(win) cout<<"You win."<<endl;
else cout<<"You chickened out."<<endl;
}//while
return 0;
}
第二天调试
一下就想到了哪里WA了···

没考虑这样一种情况:cheeseabcdefgij 输出应该是 You win.····

果然 做题太少···

#include <map>
#include<cstdlib>
#include <cstdio>
#include <string>
#include <vector>
#include <cstring>
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
#define LOCAL
int main()
{
#ifdef LOCAL
//freopen("in1.txt","r",stdin);
ifstream cin("in1.txt");
#endif
string S1,S2;
int i,n;
map<char,int>MAP;
map<char,int>::iterator it;
while(cin>>n&&n!=-1){
cout<<"Round "<<n<<endl;
MAP.clear();
int lose=0; int f=0; int left;
cin>>S1>>S2;
for(i=0; i<S1.length(); i++){
MAP[S1[i]]=1;
}
left=MAP.size();// 还剩多少个字符
for(i=0; i<S2.length(); i++){
if(MAP.find(S2[i])==MAP.end()||MAP[S2[i]]==0)
lose++;
else {
MAP[S2[i]]--;
left--;
}
if(!left) {f=1;break;}
if(lose>6){f=-1;break;}
}
if(f==-1) cout<<"You lose."<<endl;
else if(f==1) cout<<"You win."<<endl;
else cout<<"You chickened out."<<endl;
}//while
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: