1.时间:1s 空间:256M
题目描述:
给定一个n*m的矩阵,输出它的绝对矩阵。矩阵中的每个数字都是原始数字的绝对值。
输入格式
第一行包括两个整数n,m
接下来n行输入数字,矩阵中每个元素的不超过100
输出格式
绝对矩阵
样例输入
5 5
22 62 -39 -15 37
-34 95 -85 26 -57
8 33 -36 69 -4
-36 -55 -92 96 -70
79 -93 -42 -44 66
样例输出
22 62 39 15 37
34 95 85 26 57
8 33 36 69 4
36 55 92 96 70
79 93 42 44 66
约定
1<=n, m<=1000
AC代码:
#include <iostream>
#include <cmath>
using namespace std;
int n, m;
int a[510][510];
int main() {
cin >> n >> 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)
cout << abs(a[i][j]) << ' ';
cout << endl;
}
return 0;
}
2.
题目描述:
读入一个n*m的只有0和1的矩阵,输出每一列上1的个数
输入格式:
第一行两个整数n,m
之后n行,每行m个整数0或1
输出格式:
m个整数,第i个为第i列1的个数
样例输入1:
3 5
0 0 1 1 0
0 1 1 0 1
1 0 0 1 0
样例输出1:
1
1
2
2
1
样例输入2:
5 8
1 1 1 0 0 1 0 1
0 0 1 1 1 0 1 1
1 0 0 1 1 0 1 0
0 0 0 0 1 1 1 1
0 0 1 1 1 1 1 0
样例输出2:
2
1
3
3
4
3
4
3
约定:
1<=n,m<=500
提示:
#include<bits/stdc++.h>
using namespace std;
int n, m, a[505][505], cnt[505];
int main() {
cin >> n >> 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++) {
if (a[i][j] == 1) {
cnt[j]++;
}
}
}
for (int i = 1; i <= m; i++) {
cout << cnt[i] << endl;
}
return 0;
}
2.
题目描述:
给定一个n*m格的矩阵,问从左上角走到右下角有多少条不同的路径?
每步你只能向下走或向右走,且只能沿着矩阵的边线行走。
输入格式:
一行两个正整数 n,m
输出格式:
路径数目 t
样例输入1:
6 4
样例输出1:
210
样例输入2:
2 2
样例输出2:
6
样例输入3:
1 1
样例输出3:
2
约定:
1<=n<=10 1<=m<= 4
提示:
AC代码:
#include <iostream>
using namespace std;
int solve(int m, int n, int x, int y)
{
int res = 0;
if (x < m) res += solve(m, n, x + 1, y);
if (y < n) res += solve(m, n, x, y + 1);
if (x == m && y == n) return 1;
return res;
}
int main()
{
int m, n;
cin >> m >> n;
cout << solve(m, n, 0, 0);
return 0;
}
3.
时间:1s 空间:256M
题目描述
打印杨辉三角形的前 n(0≤n≤30) 行。杨辉三角形如下图:
当 n=5 时
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
输入格式
仅一行,一个整数 n(0≤n≤30)。
输出格式
输出杨辉三角形,具体格式见下面的样例。
n 行,每行各数之间用一个空格隔开。
样例输入
4
样例输出
1 1 1 1 2 1 1 3 3 1
AC代码:
#include<bits/stdc++.h>
using namespace std;
void fun(int n) {
queue<int>q;
int temp = 0;//记录队列上一个的数据
if (n >= 1) {
q.push(1);
}
for (int i = 0; i < n;i++) {
for (int i = 0; i < q.size();i++) {
cout << q.front()<<" ";
q.push(temp + q.front());
temp = q.front();
q.pop();
}
temp = 0;
q.push(1);//后入队一个尾部1
cout << endl;
}
}
int main() {
int n;
cin >> n;
fun(n);
return 0;
}