项目:
模板题目二维前缀和
高数学习
图形化界面的学习与使用(未完成)
c++一些语法
学习成果展示
活动 - AcWing题目链接
输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2
,表示一个子矩阵的左上角坐标和右下角坐标。
对于每个询问输出子矩阵中所有数的和。
输入样例:
3 4 3
1 7 2 4
3 6 2 8
2 1 2 3
1 1 2 2
2 1 3 4
1 3 3 4
输出样例:
17
27
21
解析
#include<stdio.h>
int a[1010][1010],s[1010][1010];//第i行j列格子左上部分所有元素之和
main()
{
int n,m,q;
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%d",&a[i][j]);
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];//这里是重点,进行新的转移
}
for(int i=1;i<=q;i++)
{
int x1,x2,y1,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
printf("%d\n",s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]);
//这个也是重点
}
return 0;
}
参考资料
他这里是利用图形解释的。如果可以记得图形理解,可能更方便理解二维前缀和的思路
首先解释下题目的意思:我输入n行,m列(1<=n,m<=1000)
然后q是你要输出的多少个数,就是访问的问题。 b
输入完之后,就会输入q组有4个数字的数据。分别代表着x1,y1,x2,y2;
语法学习篇————c++
后缀名
.cpp
头文件
#include<iostream>(大概和C语言#include<stdio.h>一样)
using namespace std;这个就是输出这里可以少打点
如果我想在c++里面使用printf();
我就有俩种方式
1、#include<stdio.h>//常规操作
2、#include<cstdio>
他也是main()开始
输出
cout<<"hello word!"
count<<"var"<<" "<<endl
(解释<<endl是输出回车,相当于\n;
输入
cin>>n>>m;
(这个就相当于c语言的scanf(),但是他比c语言聪明,因为它可以自动识别数据的符号
能用cin语句把空格字符和回车换行符作为字符输入给字符变量,他们将被跳过。
综合知识展示
#include<iostream>
#include<cstdio>//#include<stdio.H>
using namespace std;
int main()
{
int n;
cin>>n;
cout<<n<<" "<<"1"<<endl;
cout<<"2";
return 0;
}
函数说明
class student
{
声明成员变量
};
创建了一个 student 类,可以在该类中声明 student 类的成员变量和成员函数,用于描述 student 的各方面特性,例如姓名、学号、年龄等信息。