2 条题解
-
1
画一个图看看(x,y)x和y轴之间的关系
#include<iostream> using namespace std; int a[110][110]; int main() { int n,num=1,k; cin>>n; for(int i=1;i<=2*n-1;i++){//斜线的数量 if(i%2==1){ for(int j=1;j<=i;j++){ k=i+1-j;//(x,y)x+y等于此时斜线的序加一 if(k>=1&&k<=n&&j>=1&&j<=n){//判断是否越界 a[k][j]=num; num++; } } }else{ for(int j=1;j<=i;j++){ k=i+1-j; if(k>=1&&k<=n&&j>=1&&j<=n){ a[j][k]=num; num++; } } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cout<<a[i][j]<<" "; } cout<<"\n"; } return 0; } -
1
#include <bits/stdc++.h> using namespace std; #define int long long #define endl '\n' void solve() { int n; cin >> n; int a[n+1][n+1]; int num = 1; for(int i = 1; i <= 2 * n - 1; i++){ if(i&1){ int row = (i <= n ? i : n); int col = (i <= n ? 1 : i - n + 1); while(row >= 1 && col <= n){ a[row][col] = num++; row--; col++; } }else{ int row = (i <= n ? 1 : i - n + 1); int col = (i <= n ? i : n); while(row <= n && col >= 1){ a[row][col] = num++; row++; col--; } } } for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ cout << a[i][j] << " "; } cout << '\n'; } } signed main() { ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int T = 1; // cin >> T; while (T--) solve(); return 0; }
- 1
信息
- ID
- 1157
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 112
- 已通过
- 28
- 上传者