2 해설
-
2
画一个图看看(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; } -
2
#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
- 난이도
- 6
- 태그
- 제출 기록
- 138
- 맞았습니다.
- 41
- 아이디