1. 程式人生 > >uva340 Master-Mind Hints

uva340 Master-Mind Hints

題目:輸入N個數字。然後再輸入任意組N個數字。判斷兩個數字:1 位置完全一致  判斷完1後 2:位置不一致但是在兩組中都存在

注意:1  我的想法主要是判斷完後刪除對應數字,聽了同學思路發現根本不需要,因為數字範圍是1~9,所以判斷完置為0即可

2 在判斷第二類數字,查詢時,找到後及時break出for迴圈,否則會重複計算

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string>
#include<cstdio>
#include<iostream>
#include<math.h>
#include <map>
#include <vector>
#include <algorithm>
#include <sstream>
#include <queue>
#define N 1000
using namespace std;

int main()
{
    int length;
    int num = 1;
    while (cin>>length && length) {
        
        //輸出
        cout<<"Game "<<num++<<":"<<endl;
        int original[N]={0};
        for(int i = 0 ;i < length; i++){
            cin>>original[i];
        }
        int original_temp[N]={0};
        for(int i = 0 ;i < length; i++){
            original_temp[i]=original[i];
        }
        int match[N]={0};
        while(1){
            for(int i = 0 ;i < length; i++){
                original[i]=original_temp[i];
            }
            for(int i = 0 ;i < length; i++){
                cin>>match[i];
            }
            if(match[0]==0)break;
            //判斷第一個數
            int no1=0;
            for(int i = 0 ;i < length; i++){
                if(original[i] == match[i]){
                    original[i] = 0;
                    match[i] = 0;
                    no1++;
                }
            }
            //判斷第二個數
            int no2=0;
            for (int i = 0 ;i < length; i++) {
                if (original[i] == 0) {
                    continue;
                }
                int temp = original[i];
                for(int j = 0 ;j < length; j++){
                    if (match[j] == temp) {
                        original[i] = 0;
                        match[j] = 0;
                        no2++;
                        break;
                    }
                }
            }//for
            //輸出
            cout<<"    ("<<no1<<","<<no2<<")"<<endl;
        }//while(1)
    }
    return 0;
}
/*
 4
 1 3 5 5
 4 3 3 5
 1 1 2 3
 6 5 5 1
 6 1 3 5
 1 3 5 5
 0 0 0 0
 10 
 1 2 2 2 4 5 6 6 6 9 
 1 2 3 4 5 6 7 8 9 1 
 1 1 2 2 3 3 4 4 5 5 
 1 2 1 3 1 5 1 6 1 9 
 1 2 2 5 5 5 6 6 6 7 
 0 0 0 0 0 0 0 0 0 0 
 0
 ///////
 10
 0 2 0 0 4 5 6 6 6 9
 0 1 0 0 3 3 4 4 5 5
 1 1 2 2 3 3 4 4 5 5
 0 0 0 0 0 0 0 0 0 0
 0

 */