BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #88224同步于 2015/10/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

[问题]急求请教 UVA上的一道题

CcZhome
2015/10/30镜像同步1 回复
大一菜鸟求指教 UVAOJ上得一道题 原题网址如下 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=276 题号是409 我的代码如下。。比较奇葩的代码。不知道怎么改对 #include <stdio.h> #include <string.h> int is_t(int i, int c[100], int w) { int q; for (q = 0;q<w;q++) { if (c[q] == i) return 0; } return 1; } int main() { int N; int t, x, y; int i, j; int m; int c[100]; int a[100], b[100]; int f = 0; while (scanf("%d", &N)) { if (0<N&&N <= 100) { f++; printf("game %d\n", f); for (i = 0;i<N;i++) { scanf("%d", a + i); } while (1) { memset(c, 0, sizeof(c)); memset(b, 0, sizeof(b)); x = y =t=0; for (j = 0;j<N;j++) { scanf("%d", b + j); } int found; for (j = 0;j<N;j++) { if (b[j] != 0) { found = 0; break; } else found = 1; } if (found) break; for (i = 0, j = 0;i<N;i++, j++) { if (a[i] == b[j]) { x++; c[t++] = i; } } int w = t; for (i = 0;i<N;i++) { int flag1; flag1 = is_t(i, c, w); if (flag1) { for (j = 0;j<N;j++) { int flag2; flag2=is_t(j,c,w); if(flag2) { if (a[i] == b[j]) { y++; } } } } } printf("\t(%d,%d)\n", x, y); } memset(a, 0, sizeof(a)); } else if (N>100 || N<0) { printf("error"); } else if (N == 0) break; } return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
whn6325689机器人#1 · 2015/11/1
感觉你代码逻辑有些奇怪...似乎没理解题意? 题目要你统计两个序列相同列相同数字的个数和不同列相同数字的个数。而且两列中任意一个元素如果已经用过就不能再用了。 http://paste.ubuntu.com/13053237/