萌新求大佬,部分答案错误,是哪里错了啊

P1086 [NOIP2004 普及组] 花生采摘

我在查了
by 小杨小小杨 @ 2021-04-13 20:11:44


给您看下我的代码吧。 有借鉴题解。 ```cpp #include<cstdio> #include<algorithm> #include<cmath> using namespace std; typedef struct NODE { int x, y; int sum; //花生个数 }; NODE a[4005]; const int N = 30; int mp[N][N]; int n, m, k; int tm; int fx, fy, xx, yy; int pn; int ans; bool cmp(NODE a, NODE b) { return a.sum > b.sum; } int main(void) { int tmp; scanf("%d%d%d", &n, &m, &k); for (register int i = 1; i <= n; i++) { for (register int l = 1; l <= m; l++) { scanf("%d", &mp[i][l]); if (mp[i][l] > 0) { a[++pn].sum = mp[i][l]; a[pn].x = i; a[pn].y = l; } } } sort(a + 1, a + pn + 1, cmp); fx = 1, fy = a[1].y; k--; for (int i = 1; i <= pn; i++) { tm = 0; xx = a[i].x; yy = a[i].y; tm = abs(fx - xx) + abs(fy - yy); k--; k -= tm; if (k >= xx) { ans += mp[xx][yy]; fx = xx; fy = yy; } else { printf("%d", ans); return 0; } } printf("%d", ans); return 0; } ``` [![cyZOHJ.png](https://z3.ax1x.com/2021/04/13/cyZOHJ.png)](https://imgtu.com/i/cyZOHJ) 我有时间可能会帮你查一下错。
by XiaoQuQu @ 2021-04-13 20:23:41


额这,我一看就看出来了。在您的代码里,这部分出了点小问题。 [![cyeRxK.png](https://z3.ax1x.com/2021/04/13/cyeRxK.png)](https://imgtu.com/i/cyeRxK) 您用的是k++ 。 在``cin>>mp[k++]``时,您的``k``为``0``,而到了``mp[k].x=i,mp[k].y=j``时,您的``k``更新为``1``,这就错了。
by XiaoQuQu @ 2021-04-13 20:29:28


~~下线了一下发现有人回答了……~~
by 小杨小小杨 @ 2021-04-13 20:32:25


|