错误代码如下:
#include <cstring>
#include <string>
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <stack>
#include <queue>
#include <limits.h>
#include <list>
#include <set>
#include <map>
using namespace std;
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)>(b)?(b):(a))
#define INF 0x3f3f3f3f
#define ll long long
#define sc scanf
#define pr printf
#define v1 first
#define v2 second
#define ll long long
int n,m,k,a[25][25];
struct pos{
int num,x,y;
void set(int a1,int a2,int a3)
{
num=a1;
x=a2;
y=a3;
}
pos(){
num=0;
x=0;
y=0;
}
}p[630];
int main()
{
int cnt=0;
sc("%d%d%d",&n,&m,&k);
for(int i=1; i <= n; i++)
{
for(int j=1; j <= m; j++)
{
sc("%d",&a[i][j]);
if(a[i][j]>0)
{
p[++cnt].set(a[i][j],i,j);
}
}
}
sort(p+1,p+cnt+1,[](pos x,pos y){return x.num>y.num;});
int cnt2=0;
pos cur;
cur.set(0,1,p[1].y);
k--;
for(int i=1; i <= n; i++)
{
if(abs(p[i].x-cur.x)+abs(p[i].y-cur.y)+1+p[i].x<=k)
{
cnt2+=p[i].num;
k-=abs(p[i].x-cur.x)+abs(p[i].y-cur.y)+1;
cur=p[i];
}
else
{
cout <<cnt2;
return 0;
}
// cout << k;
}
cout << cnt2;
return 0;
}
沦落为WA60
重要事情说三遍:
循环范围不要写错
循环范围不要写错
循环范围不要写错
查了30分钟才查出来(悲