UVA 340 - Master-Mind Hints
2017-09-01 19:52
453 查看
题目大意:判断与第一行对比。竖下来的同位置上相同的数有几个,除去相同的数,剩下的数有有几个一一对应相等。
解题思路:同位置相同的数直接循环判断。剩下的数扔到另外的数组,并排序,两个循环判断。如果第一行剩下来的数比下行剩下来的数大,之后的里面的循环下标变大,相等时,里面的循环下标也变大。否则会出现重复计算,就不是一一对应了。
ac代码:
解题思路:同位置相同的数直接循环判断。剩下的数扔到另外的数组,并排序,两个循环判断。如果第一行剩下来的数比下行剩下来的数大,之后的里面的循环下标变大,相等时,里面的循环下标也变大。否则会出现重复计算,就不是一一对应了。
ac代码:
#include <iostream> #include <algorithm> using namespace std; int main() { int n, a[2][1005], b[2][1005]; int temp1, temp2, len, k, count=1; while (scanf("%d", &n)!=EOF && n){ printf("Game %d:\n", count); for (int i=0; i<n; i++) scanf("%d", &a[0][i]); while (scanf("%d", &a[1][0])){ temp1 = temp2 = len = k = 0; for (int i=1; i<n; i++) scanf("%d", &a[1][i]); if (a[1][0] == 0) break; for (int i=0, j=0; i<n; i++) if (a[0][i] == a[1][i]) temp1++; else{ b[0][j] = a[0][i]; b[1][j++] = a[1][i]; len++; } sort(b[0], b[0]+len); sort(b[1], b[1]+len); for (int i=0; i<len; i++) for (int j=k; j<len; j++){ if (b[0][i] > b[1][j]) k = j+1; else if (b[0][i] == b[1][j]){ temp2++; k = j+1; break; } else break; } printf(" (%d,%d)\n", temp1, temp2); } count++; } return 0; }
相关文章推荐
- *UVa 340 Master-Mind Hints(例题3-4)
- 猜数字游戏的提示 (Master-Mind Hints, UVa 340)
- UVA 340 - Master-Mind Hints
- UVA - 340 Master-Mind Hints
- UVa 340 - Master-Mind Hints
- uva340 - Master-Mind Hints
- UVA 340-Master-Mind Hints
- UVa 340 Master-Mind Hints
- UVa340 Master-Mind Hints
- UVA340 Master-Mind Hints
- UVA340 - Master-Mind Hints
- uva 340 Master-Mind Hints(水题)
- UVa 340 Master-Mind Hints
- UVA - 340 Master-Mind Hints
- UVA - 340 Master-Mind Hints
- uva_340 - Master-Mind Hints
- UVA 340 Master-Mind Hints
- UVa340 Master-Mind Hints
- UVa 340 - Master-Mind Hints
- uva - 340 - Master-Mind Hints