7 solutions
-
8
/* 观察每个对角线的起点和每次填写的次数, 根据当前需要填写的行数的奇偶去判断是从左下到右上,还是右上到左下 */ #include<bits/stdc++.h> using namespace std; const int N=20; int g[N][N]; int main() { int n; cin>>n; int cnt=1; for(int i=1;i<=n;i++) //填写第i列的起点 { if(i%2==0) //偶数行左上到右下 { for(int x=1,y=i;x<=i;x++,y--) //从(1,i) { g[x][y]=cnt++; } } else //奇数行左下到右上 { for(int x=i,y=1;y<=i;x--,y++) //从(i,1) { g[x][y]=cnt++; } } } for(int i=1;i<=n;i++) { for(int j=1;j<=n-i+1;j++) { cout<<g[i][j]<<" "; } cout<<endl; } return 0; }
-
5
#include<bits/stdc++.h> using namespace std; const int N=25; int dx[]={-1,0,1,1};//行下左上右 int dy[]={1,1,-1,0};//列下左上右 int a[N][N]; int main() { int n; cin>>n; int d=0; int x=1,y=1; for(int i=1;i<=n*(n+1)/2;i++) { a[x][y]=i; int tx=x+dx[d],ty=y+dy[d]; //(tx,ty)是由(x,y)通过d方向可以走到的点 if(tx<1||ty<1) //越界,或者(tx,ty)已经有数 { d++; //换个方向 if(d==4) d=0; //方向走完以后从下开始 tx=x+dx[d],ty=y+dy[d]; d++; if(d==4) d=0; //方向走完以后从下开始 //由新的方向可以走到的位置 } x=tx,y=ty; } for(int i=1;i<=n;i++) { for(int j=1;j<=n-i+1;j++) { cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
-
0
/* 观察每个对角线的起点和每次填写的次数, 根据当前需要填写的行数的奇偶去判断是从左下到右上,还是右上到左下 */ #include<bits/stdc++.h> using namespace std; const int N=20; int g[N][N]; int main() { int n; cin>>n; int cnt=1; for(int i=1;i<=n;i++) //填写第i列的起点 { if(i%2==0) //偶数行左上到右下 { for(int x=1,y=i;x<=i;x++,y--) //从(1,i) { g[x][y]=cnt++; } } else //奇数行左下到右上 { for(int x=i,y=1;y<=i;x--,y++) //从(i,1) { g[x][y]=cnt++; } } } for(int i=1;i<=n;i++) { for(int j=1;j<=n-i+1;j++) { cout<<g[i][j]<<" "; } cout<<endl; } return 0; }
-
-1
#include<bits/stdc++.h> using namespace std; const int N=20; int g[20][20]; int main() { int n; cin>>n; int cnt=1; for(int i=1;i<=n;i++) //填写第i列的起点 { for(int x=1,y=i;x<=i;x++,y--) //从(1,i) { g[x][y]=cnt++; } } for(int i=1;i<=n;i++) { for(int j=1;j<=n-i+1;j++) { if(g[i][j] !=0) cout<<g[i][j]<<" "; } cout<<endl; } return 0; }
-
-3
#include<bits/stdc++.h> using namespace std; const int N=11; int n[N][N]; int main(){ int qwert; cin>>qwert; int asdf=1; for(int i=1;i<=qwert;i++) { int l=i; int p=1; while(l>=1) { if(i%2==0) { n[p][l]=asdf; } else { n[l][p]=asdf; } asdf++; p++; l--; } } for(int q=1;q<=qwert;q++) { for(int d=1;d<=qwert;d++) { if(n[q][d]==0) { continue; } cout<<n[q][d]<<" "; } cout<<endl; } return 0; }
- 1
Information
- ID
- 82
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 4
- Tags
- (None)
- # Submissions
- 81
- Accepted
- 29
- Uploaded By