uva340 Master-Mind Hints
阿新 • • 發佈:2019-01-27
題目:輸入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 */