感觉在哪里判断大小都可以,一个WA,一个AC
查看原帖
感觉在哪里判断大小都可以,一个WA,一个AC
522982
Phyllis_楼主2022/10/17 21:54

程序中有一段注释,感觉放在if中或不放都可以,可是放在if中就会WA两个点,大佬们有什么特判数据吗

#include <bits/stdc++.h>
using namespace std;
int r,c; 
const int maxn = 510;
int a[maxn][maxn],dp[maxn][maxn];

struct node{
	int x,y,sum;
};
struct cmp_1{
    bool operator()(node x,node y){
        return x.sum>y.sum;
    }
};
priority_queue<node,vector<node>,cmp_1> q;
int b[4][2] = {1,0,-1,0,0,-1,0,1};
int ans;
int main(){
    cin >> r >> c;
    for(int i = 1; i <= r; i++){
		for(int j = 1; j <= c; j++){
		    dp[i][j] =  1;
			cin >> a[i][j];
			node num;
			num.x = i,num.y = j,num.sum = a[i][j];
			q.push(num);
		}
    }
	while(!q.empty()){
		node num = q.top();
		q.pop();
		for(int k = 0; k < 4; k++){
			int xx = num.x + b[k][0],yy = num.y + b[k][1];
			if(xx > 0 && yy > 0 && xx <= r && yy <= c &&num.sum > a[xx][yy]) {
				dp[num.x][num.y] = max(dp[xx][yy] + 1,dp[num.x][num.y]); 	
				
			}
		}
		ans = max(ans,dp[num.x][num.y]);//这里不知道为什么不能放在if中
	}
  
				
	cout << ans;
    return 0;
}
2022/10/17 21:54
加载中...