其实这应该是集训第一天的内容,不过我鸽了,鸽鸽更健康。
先从c++的语法说起吧。
一、头文件和输入输出
1.万能头文件 放在第一行
#include<bits/stdc++.h>
2.输入方式
cin >>
3.输出方式
cout << “Hello World!”;
4.换行
<< endl
更多c++输入输出流以及相关语法知识请参见
C++输入输出流(c语言中文网)
二、二维数组
定义:
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。
格式:
类型说明符 数组名[常量表达式1][常量表达式2];
要求:
定义时,可以省略第一维的大小,但第二维的大小不可省略。
二维数组其实是按一维方式存储的。
二维数组行优先。
二维数组相关知识参见
C语言二维数组的定义、初始化、赋值(c语言中文网)
NEFU OJ 951 二维矩阵最大值
#include <iostream>
using namespace std;
int main()
{
int a[10][10],maxi,maxj,n,m,maxx;
while(cin >>n>>m)
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin >> a[i][j];
maxx=a[0][0];
maxi=0;maxj=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(a[i][j]>maxx)
{maxx=a[i][j];
maxi=i;
maxj=j;}
}
cout<<maxi+1<<" "<<maxj+1<<" "<<maxx;
cout<<endl;
}
return 0;
}
NEFU OJ 953 矩阵相加
#include <iostream>
using namespace std;
int main()
{
int a[10][10],b[10][10],c[10][10];
int n,m;
while(cin >>n>>m)
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin >> a[i][j];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin >> b[i][j];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
c[i][j]=a[i][j]+b[i][j];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{cout<<c[i][j];
(j==m-1)?cout<<endl:cout<<" ";}
}
}
return 0;
}
NEFU OJ 952 二维矩阵对角线和
#include <iostream>
using namespace std;
int main()
{
int a[10][10];
int m,s;
while(cin >>m)
{
s=0;
for(int i=0;i<m;i++)
for(int j=0;j<m;j++)
cin >> a[i][j];
for(int i=0;i<m;i++)
for(int j=0;j<m;j++)
{if(i==j)
s=a[i][j]+s;
if(i+j==m-1)
s=a[i][j]+s;}
cout<<s<<endl;
}
return 0;
}
NEFU OJ 1064 矩阵的外围
#include <iostream>
using namespace std;
int main()
{
int a[10][10];
int m,s,n;
while(cin >>n>>m)
{
s=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin >> a[i][j];
for(int j=1;j<=m;j++)
s=s+a[1][j]+a[n][j];
for(int i=2;i<m;i++)
for(int j=1;j<=m;j++)
if(j==1||j==m)
s=s+a[i][j];
cout<<s<<endl;
}
return 0;
}
NEFU OJ 955 五人帮
思想:分类分类再分类。
#include <iostream>
using namespace std;
int main()
{
int a[10][10],b[10][10];
int m,s,n;
while(cin >>n>>m)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin >> a[i][j];
b[1][1]=a[1][1]+a[1][2]+a[2][1];
b[n][m]=a[n][m]+a[n-1][m]+a[n][m-1];
b[1][m]=a[1][m]+a[1][m-1]+a[2][m];
b[n][1]=a[n][1]+a[n-1][1]+a[n][2];
for(int j=2;j<m;j++)
b[1][j]=a[1][j]+a[1][j-1]+a[1][j+1]+a[2][j];
for(int j=2;j<m;j++)
b[n][j]=a[n][j]+a[n][j-1]+a[n][j+1]+a[n-1][j];
for(int i=2;i<n;i++)
b[i][1]=a[i-1][1]+a[i+1][1]+a[i][2]+a[i][1];
for(int i=2;i<n;i++)
b[i][m]=a[i-1][m]+a[i+1][m]+a[i][m-1]+a[i][m];
for(int i=2;i<n;i++)
for(int j=2;j<m;j++)
b[i][j]=a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j+1]+a[i][j-1];
s=b[1][1];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(b[i][j]>s)
s=b[i][j];
cout << s <<endl;
}
return 0;
}
这么写,想必你已经看吐了,简单版参见大佬写法。