Day 2
二维数组
1.在printf中,是用“%%”来输出百分号;
printf("%%");
2.稀疏矩阵
指矩阵中 0 的个数超过矩阵中元素数量的一半
3.杨辉三角
for(int i=0;i<n;i++){
for(int k=0;k<=i;k++){
if(k==0||k==i){
arr[i][k]=1;
}
else{
arr[i][k]=arr[i-1][k-1]+arr[i-1][k];
}
cout<<arr[i][k];
4.矩阵鞍点(涂色)
鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
5.#include<climits>
它包含了与整数类型极限值相关的常量
CHAR_BIT: 8
SCHAR_MIN: -128
SCHAR_MAX: 127
UCHAR_MAX: 255
CHAR_MIN: -128
CHAR_MAX: 127
MB_LEN_MAX: 16
SHRT_MIN: -32768
SHRT_MAX: 32767
USHRT_MAX: 65535
INT_MIN: -2147483648
INT_MAX: 2147483647
UINT_MAX: 4294967295
LONG_MIN: -2147483648
LONG_MAX: 2147483647
ULONG_MAX: 4294967295
LLONG_MIN: -9223372036854775808
LLONG_MAX: 9223372036854775807
ULLONG_MAX: 18446744073709551615
6.矩阵乘法
如果矩阵 A 是一个 m×n 的矩阵,矩阵 B 是一个 n×p 的矩阵,则它们的乘积 C 是一个 m×p 的矩阵。
矩阵乘法的规则是:矩阵 C 的第 i 行第 j 列的元素c
ij
等于矩阵 A 的第 i 行与矩阵 B 的第 j 列的对应元素乘积之和。
输入两个矩阵 A 和 B,计算它们的乘积矩阵 C = A × B。
int main() {
int m, n, p;
cin >> m >> n >> p;
vector<vector<int>> A(m, vector<int>(n));
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
cin >> A[i][j];
}
}
vector<vector<int>> B(n, vector<int>(p));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < p; ++j) {
cin >> B[i][j];
}
}
vector<vector<int>> C(m, vector<int>(p, 0));
for (int i = 0; i < m; ++i) {
for (int j = 0; j < p; ++j) {
for (int k = 0; k < n; ++k) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
for (int i = 0; i < m; ++i) {
for (int j = 0; j < p; ++j) {
cout << C[i][j];
if (j != p - 1) {
cout << " ";
}
}
cout << endl;
}
return 0;
}
7.扫雷
for(int i=0;i<n+2;i++){
for(int j=0;j<m+2;j++){
if(i==0||i==n+1||j==0||j==m+1){
a[i][j]='?';
}
}
}
for(int i=1;i<n+1;i++){
for(int j=1;j<m+1;j++){
cin>>a[i][j];
if(a[i][j]=='*'){
b[i][j]='*';
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
s=0;
if(a[i][j]=='*'){b[i][j]=a[i][j];}
else{
if(a[i-1][j]=='*')s++;
if(a[i+1][j]=='*')s++;
if(a[i][j+1]=='*')s++;
if(a[i][j-1]=='*')s++;
if(a[i-1][j-1]=='*')s++;
if(a[i-1][j+1]=='*')s++;
if(a[i+1][j-1]=='*')s++;
if(a[i+1][j+1]=='*')s++;
b[i][j]='0'+s;
}
cout<<b[i][j];
}
1.在printf中,是用“%%”来输出百分号;
printf("%%");
2.稀疏矩阵
指矩阵中 0 的个数超过矩阵中元素数量的一半
3.杨辉三角
for(int i=0;i<n;i++){
for(int k=0;k<=i;k++){
if(k==0||k==i){
arr[i][k]=1;
}
else{
arr[i][k]=arr[i-1][k-1]+arr[i-1][k];
}
cout<<arr[i][k];
4.矩阵鞍点(涂色)
鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
5.#include<climits>
它包含了与整数类型极限值相关的常量
CHAR_BIT: 8
SCHAR_MIN: -128
SCHAR_MAX: 127
UCHAR_MAX: 255
CHAR_MIN: -128
CHAR_MAX: 127
MB_LEN_MAX: 16
SHRT_MIN: -32768
SHRT_MAX: 32767
USHRT_MAX: 65535
INT_MIN: -2147483648
INT_MAX: 2147483647
UINT_MAX: 4294967295
LONG_MIN: -2147483648
LONG_MAX: 2147483647
ULONG_MAX: 4294967295
LLONG_MIN: -9223372036854775808
LLONG_MAX: 9223372036854775807
ULLONG_MAX: 18446744073709551615
6.矩阵乘法
如果矩阵 A 是一个 m×n 的矩阵,矩阵 B 是一个 n×p 的矩阵,则它们的乘积 C 是一个 m×p 的矩阵。
矩阵乘法的规则是:矩阵 C 的第 i 行第 j 列的元素c
ij
等于矩阵 A 的第 i 行与矩阵 B 的第 j 列的对应元素乘积之和。
输入两个矩阵 A 和 B,计算它们的乘积矩阵 C = A × B。
int main() {
int m, n, p;
cin >> m >> n >> p;
vector<vector<int>> A(m, vector<int>(n));
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
cin >> A[i][j];
}
}
vector<vector<int>> B(n, vector<int>(p));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < p; ++j) {
cin >> B[i][j];
}
}
vector<vector<int>> C(m, vector<int>(p, 0));
for (int i = 0; i < m; ++i) {
for (int j = 0; j < p; ++j) {
for (int k = 0; k < n; ++k) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
for (int i = 0; i < m; ++i) {
for (int j = 0; j < p; ++j) {
cout << C[i][j];
if (j != p - 1) {
cout << " ";
}
}
cout << endl;
}
return 0;
}
7.扫雷
for(int i=0;i<n+2;i++){
for(int j=0;j<m+2;j++){
if(i==0||i==n+1||j==0||j==m+1){
a[i][j]='?';
}
}
}
for(int i=1;i<n+1;i++){
for(int j=1;j<m+1;j++){
cin>>a[i][j];
if(a[i][j]=='*'){
b[i][j]='*';
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
s=0;
if(a[i][j]=='*'){b[i][j]=a[i][j];}
else{
if(a[i-1][j]=='*')s++;
if(a[i+1][j]=='*')s++;
if(a[i][j+1]=='*')s++;
if(a[i][j-1]=='*')s++;
if(a[i-1][j-1]=='*')s++;
if(a[i-1][j+1]=='*')s++;
if(a[i+1][j-1]=='*')s++;
if(a[i+1][j+1]=='*')s++;
b[i][j]='0'+s;
}
cout<<b[i][j];
}
全部评论
相关推荐
2025-12-15 14:16
门头沟学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
深信服公司福利 845人发布
查看2道真题和解析