第1题 对角线 时限:1s 空间:256m
输入整数N,输出相应方阵。
输入格式
一个整数N。( 0 < n < 10 )
输出格式
一个方阵,每个数字的场宽为3。
输入/输出例子1
输入:
5
输出:
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
#include<bits/stdc++.h>
using namespace std;
int n,s,z;
int main(){
cin>>n;
s=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<setw(3);
if(j==s)cout<<1;
else cout<<0;
}
s++;
cout<<endl;
}
return 0;
}
第2题 相同像素
给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相同像数。
说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。
输入格式
第一行包含两个整数
第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1 <= m <= 100, 1 <= n <= 100。
之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
数据范围限制
1 <=m<=100,1<=n<=100
输出格式
一个整数s,表示像素点相同的个数。以s%50+50为半径,s%15为颜色编号,画实心圆,并使用text命令画出s的值,白色,大小为50。
输入/输出例子1
输入:
3 3
1 0 1
0 0 1
1 1 0
1 1 0
0 0 1
0 0 1
输出:
int a[110][110],b[110][110];
int s;
void z(int n,int m)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>b[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]==b[i][j])
s++;
}
int main(){
int n,m;
cin>>n>>m;
z(n,m);
p.oo(s%50+50,s%15).text(s,15,50);
return 0;
}
第3题 计算鞍点
给定一个5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
输入格式
输入包含一个5行5列的矩阵。
输出格式
如果存在鞍点,求出鞍点所在的行x、列y及其值s,如果存在多个鞍点,只输出行最小、列最小的那个。分别以x%15、y%15、s%15为颜色编号,画出直接为50的实心圆,同时以text命令显示x、y、s的值。
如果不存在鞍点,则画半径为100的红色实心圆,并text命令显示"not found"。
输入/输出例子1
输入:
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
输出:
int a[10][10],max[10],min[10],z;
int main(){
p.rt(90).up().bk(350);
for(int i=1;i<=6;i++)
min[i]=1000;
for(int i=1;i<=5;i++)
for(int j=1;j<=5;j++)
cin>>a[i][j];
for(int i=1;i<=5;i++)
for(int j=1;j<=5;j++)
if(a[i][j]>max[i])
max[i]=a[i][j];
for(int i=1;i<=5;i++)
for(int j=1;j<=5;j++)
if(a[j][i]<min[i])
min[i]=a[j][i];
for(int i=1;i<=5;i++)
for(int j=1;j<=5;j++)
if(a[i][j]==max[i]&&a[i][j]==min[j])
{
p.oo(50,i%15).text(i).fd(100).oo(50,j%15).text(j).fd(100);
p.oo(50,a[i][j]%15).text(a[i][j]).fd(100);
z=1;
}
if(z==0)
p.fd(200).oo(100,1).text("not found");
return 0;
}
第4题 计算矩阵边缘元素之和
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。
输入格式
第一行分别为矩阵的行数m和列数n(m<100,n<100),两者之间以一个空格分开。
接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。
输出格式
设对应矩阵的边缘元素和为sum。以s%50+50为半径,s%15为颜色编号,画实心圆,并使用text命令画出s的值,白色,大小为50。
输入/输出例子1
输入:
3 3
3 4 1
3 7 1
2 0 1
输出:
int main(){
int n,m,a,s;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a;
if(i==1||i==n||j==1||j==m)s=s+a;
}
}
p.oo(s%50+50,s%15).text(s,15,50);
return 0;
}
第5题 蛇形填数
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …
…
容易看出矩阵第二行第二列中的数是 5。
请你计算矩阵中第 n 行第 n 列的数是多少?
输入格式
一个整数N,N<=1000
输出格式
以矩阵中第 n 行第 n 列的数s%15为颜色编号,s%50+50为半径画实心圆。
输入/输出例子1
输入:
20
输出:
int main(){
int n,a,s,q;
cin>>n;
a=n*2-1;
for(int i=0;i<=a;i++)
s=s+i;
q=s-a/2;
p.oo(q%50+50,q%15);
return 0;
}
第6题 蛇形填数 时限:5s 空间:256m
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …
…
容易看出矩阵第二行第二列中的数是 5。
请你计算矩阵中第 n 行第 n 列的数是多少?
输入格式
一个整数N,N<=10^5
输出格式
一个整数,表示矩阵中第 n 行第 n 列的数
输入/输出例子1
输入:
20
输出:
761
#include<bits/stdc++.h>
using namespace std;
long long n,a,s,q;
int main(){
cin>>n;
a=n*2-1;
for(int i=0;i<=a;i++)
s=s+i;
q=s-a/2;
cout<<q;
return 0;
}
第7题 监考老师
时限:1s 空间:256m
在一个大试场里,有n行m列的考生,小王和众多同学正在考试,这时,有一部分考生作弊,当然,监考老师能发现他们。但是只有一个监考老师,他由于高度近视,只能发现与他同行同列的作弊者,而且由于监考老师年老体弱,在考试过程中无法移动。现在已知n*m个考生中谁在作弊,请帮监考老师找一个位置,可以发现最多的作弊者(监考老师可以和某个考生在同一位置)。如果监考老师的位置上的考生在作弊,那么监考老师先前后看,发现学生A作弊,再左右看,又发现学生A作弊,算做发现2个考生作弊。
输入格式
第一行两个数n,m ,表示试场是n*m的,接下来是n*m的矩阵,1表示作弊,0表示不作弊。
【数据范围】
对于50 %的数据,n,m大于0小于等于10,对于100 %的数据,n,m大于0小于等于2000。
输出格式
共一行,一个数,表示最多可以发现多少作弊者。
输入/输出例子1
输入:
5 5
0 0 1 0 0
0 0 1 0 0
1 1 1 1 1
0 0 1 0 0
0 0 1 0 0
输出:
10
样例解释
监考老师在最中间,那个位置上的作弊者算作2次
#include<bits/stdc++.h>
using namespace std;
long long n,a[2005],b[2005],s,m,maxx=0;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int t;
cin>>t;
if(t==1)a[i]++,b[j]++;
}
}
sort(a+1,a+n+1);
sort(b+1,b+m+1);
cout<<a[n]+b[m];
return 0;
}
第8题 地毯
时限:1s 空间:256m
在 n×n 的格子上有 m个地毯。
给出这些地毯的信息,问每个点被多少个地毯覆盖。
输入格式
第一行,两个正整数 n,m。意义如题所述。
接下来 m行,每行两个坐标 (x1,y1) 和 (x2,y2),代表一块地毯,左上角是 (x1,y1),右下角是(x2,y2)。
对于 20% 的数据,有 n≤50,m≤100。
对于 100% 的数据,有 n,m≤1000
输出格式
输出 n行,每行 n个正整数。
第 i 行第 j列的正整数表示 (i,j)这个格子被多少个地毯覆盖。
输入/输出例子1
输入:
5 3
2 2 3 3
3 3 5 5
1 2 1 4
输出:
0 1 1 1 0
0 1 1 0 0
0 1 2 1 1
0 0 1 1 1
0 0 1 1 1
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1005][1005],x,y,xx,yy;
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y>>xx>>yy;
for(int k=x;k<=xx;k++)
{
for(int q=y;q<=yy;q++)
{
a[k][q]++;
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
第9题 倒三角数阵 时限:1s 空间:256m
输入一个整数N,输出一个倒三角数阵!每个数字场宽为4。
输入格式
一个整数n ,n<=20。
输出格式
相应的数阵。
输入/输出例子1
输入:
5
输出:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
#include<bits/stdc++.h>
using namespace std;
long long n,s,m=1,z;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
s=m,z=i+1,m=m+i;
for(int j=1;j<=n-i+1;j++)
{
cout<<s<<" ";
s=s+z,z++;
}
cout<<endl;
}
return 0;
}
标签:输出,语言,10,int,矩阵,50,Goc,C++,输入
From: https://blog.csdn.net/mayuteng1/article/details/139561145