UVA340 Master-Mind Hints【数组】
生活随笔
收集整理的這篇文章主要介紹了
UVA340 Master-Mind Hints【数组】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Master-Mind Hints
?UVA - 340?
題目傳送門
題目大意:先輸入一個整數n,表示有n個數字,下面第一行代表正確答案,其下每一行代表用戶猜的答案,需統計其有多少數字位置正確(A),有多少數字在兩個字符串中都出現過但位置不正確(B),輸入一全為0結束。
AC代碼:
#include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstdlib> #include <cstring> #include <map> #include <stack> #include <queue> #include <vector> #include <bitset> #include <set> #include <utility> using namespace std; typedef long long ll; #define inf 0x3f3f3f3f #define rep(i,l,r) for(int i=l;i<=r;i++) #define lep(i,l,r) for(int i=l;i>=r;i--) #define ms(arr) memset(arr,0,sizeof(arr)) //priority_queue<int,vector<int> ,greater<int> >q; const int maxn = (int)1e5 + 5; const ll mod = 1e9+7; int arr[maxn]; int num[15]; int num1[15]; int arr1[maxn]; int main() {freopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);int n;int cnt=0;while(scanf("%d",&n)!=EOF&&n){cnt++;ms(arr);ms(vis);ms(num);printf("Game %d:\n",cnt);rep(i,1,n) {scanf("%d",&arr[i]);num[arr[i]]++; //記錄每個數字出現了多少次}while(1){memcpy(num1,num,sizeof(num)); //將其復制到num1中以便使用int A=0,B=0;int sum=0;rep(i,1,n) {scanf("%d",&arr1[i]);sum+=arr1[i]; //判斷全為0時結束if(arr1[i]==arr[i]){A++; //位置正確則A++num1[arr1[i]]--; //有一個位置正確就證明不正確的少了一個}}rep(i,1,n) {if(arr1[i]!=arr[i]&&num1[arr1[i]]>0) //位置不正確且又在原數組中出現過{B++;num1[arr1[i]]--;}}if(sum==0)break;printf(" (%d,%d)\n",A,B);}}return 0; }?
總結
以上是生活随笔為你收集整理的UVA340 Master-Mind Hints【数组】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】超酷的 mip-infinites
- 下一篇: 螺旋方阵问题【数组】