题解 | 【模板】二维前缀和

【模板】二维前缀和

https://www.nowcoder.com/practice/99eb8040d116414ea3296467ce81cbbc

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
	  //1.处理输入
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt(),m=scanner.nextInt(),q=scanner.nextInt();
		long[][] arr=new long[n+1][m+1];
		for (int i = 1; i <n+1; i++) {
			for (int j = 1; j <m+1; j++) {
				arr[i][j]=scanner.nextLong();
			}
		}
		//2.创建dp数组表示前缀和矩阵
		long[][] dp=new long[n+1][m+1];
		for (int i = 1; i <n+1; i++) {
			for(int j=1;j<m+1;j++) {
				dp[i][j]=dp[i-1][j]+dp[i][j-1]+arr[i][j]-dp[i-1][j-1];
			}
		}
		//3.使用前缀和矩阵来求和
		while(q>0) {
			int x1=scanner.nextInt(),y1=scanner.nextInt(),x2=scanner.nextInt(),y2=scanner.nextInt();
		System.out.println(dp[x2][y2]-dp[x1-1][y2]-dp[x2][y1-1]+dp[x1-1][y1-1]);
			q--;
		}
		scanner.close();
	}
    }

全部评论

相关推荐

做个有文化的流氓:不想当将军的士兵不是好士兵
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务