UVA - 340 - Mind Hints

来源:互联网 发布:服务器流量统计软件 编辑:程序博客网 时间:2024/05/29 21:28

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=98&page=show_problem&problem=276


题意:

    输入N个CODE,N个GUESS数。逐个比较,如果数字相等CODEi==GUESSj,且位置相同i==j时,为strong;否则为weak。

    要求结果输出(strong, weak)个数。


解题:

    按题目对strong和weak的定义,直接进行一个个对比。注意:匹配过的数字,不能再使用第二次。

    简单的题目还要上网找答案,真水!


#include <iostream>#include <vector>#include <stdio.h>using namespace std;// #define LOCAL_TESTint main(){#ifdef LOCAL_TESTfreopen("f:\\in.txt", "r", stdin);freopen("f:\\out.txt", "w+", stdout);#endifint nCode;// determine number of codeint nIndex;// count the gameint tmpIn;// temporary input for innIndex = 0;while ( cin >>nCode ){// if nCode is 0, input endif ( nCode == 0 ){break;} // end if// count the gamenIndex++;// get Codes using vectorvector <int> vCode;for ( int i=0; i<nCode; i++ ){cin >>tmpIn;vCode.push_back(tmpIn);} // end for//output format textcout <<"Game " <<nIndex <<":" <<'\n';// start to guesswhile ( 1 ){// get Guesses using vectorvector <int> vGuess;for ( int i=0; i<nCode; i++ ){cin >>tmpIn;vGuess.push_back(tmpIn);} // end for// reset flag vector for guess numbersvector <int> vVisited;for ( int i=0; i<nCode; i++ ){vVisited.push_back(0);} // end for// end guessif ( vGuess[0] == 0 ){break;} // end ifint strong = 0;int weak = 0;// Find all matchesfor ( int i=0; i<nCode; i++ ){for ( int k=0; k<nCode; k++ ){if ( vVisited[k] == 0 ){if ( vGuess[i] == vCode[k] && i == k){vVisited[k] = 1;strong++;break;} // end ifelse{if ( vGuess[i] == vCode[k] && i != k&& vGuess[i] != vCode[i] && vGuess[k] != vCode[k]){vVisited[k] = 1;weak++;break;} // end if} // end else} // end if} // end for} // end for// output endcout <<"    " <<"(" <<strong <<"," <<weak <<")" <<'\n';} // end while} // end whilereturn 0;}


0 0