UVA 340 Master-Mind Hints

Posted by

https://www.luogu.org/problemnew/show/UVA340 思路:并没有采用lrj书上的思路。 而是使用vector乱搞。。挺暴力的。 应该。。挺容易看懂的,就不赘述了。 代码:

#include <cstdio>
#include <cctype>
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int n,cnt,a,b,A,B;
vector<int> va,va1,vb,rea;
inline int read(){
    int x=0;bool sign=false;
    char alpha=0;
    while(!isdigit(alpha)) sign|=alpha=='-',alpha=getchar();
    while(isdigit(alpha)) x=(x<<1)+(x<<3)+(alpha^48),alpha=getchar();
    return sign?-x:x;
}
int main(){
    while(scanf("%d",&n)==1&&n){
        printf("Game %d:\n",++cnt);
        for(int i=1;i<=n;i++) a=read(),va.push_back(a),rea.push_back(a);
        while(1){
            for(int i=0;i<n;i++){
                b=read();
                if(va[i]==b){
                    A++;
                    va1.push_back(va[i]);
                }
                else vb.push_back(b);
            }
            if(b==0) break;
            for(int i=0;i<va1.size();i++) va.erase(find(va.begin(),va.end(),va1[i]));
            for(int i=0;i<vb.size();i++){
                int f=vb[i];
                vector<int>::iterator s=find(va.begin(),va.end(),f);
                if(s!=va.end()) B++,va.erase(s);
            }
            printf("    (%d,%d)\n",A,B);
            va.clear();vb.clear(),va1.clear();
            A=0,B=0;
            for(int i=0;i<rea.size();i++) va.push_back(rea[i]);
        }
        va.clear();vb.clear(),va1.clear(),rea.clear();
        A=0,B=0;
    }
    return 0;
}
  ]]>

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注