1 条题解
-
0
C :
#include<stdio.h> #include<string.h> int main() { int a[21][21]; memset(a,0,sizeof(a)); int n; scanf("%d",&n); int count=1,e=0; int left=0,right=n; while(e<=n/2) { for(int i=left;i<right;i++) { a[e][i]=count++; } for(int i=left+1;i<right;i++) { a[i][n-1-e]=count++; } for(int i=right-2;i>=left;i--) { a[n-1-e][i]=count++; } for(int i=right-2;i>=left+1;i--) { a[i][e]=count++; } left++,right--,e++; } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { printf("%-4d",a[i][j]); } printf("\n"); } return 0; }
C++ :
#include <iostream> #include <iomanip> using namespace std; int M[20][20]; int k=1; void f(int x,int len)//从坐标x,x这个位置,填充一圈,圈长为len { int i; if(len<=0) return; if(len==1) M[x][x]=k; else { for(i=0;i<len-1;i++) M[x][x+i]=k++; for(i=0;i<len-1;i++) M[x+i][x+len-1]=k++; for(i=len-1;i>0;i--) M[x+len-1][x+i]=k++; for(i=len-1;i>0;i--) M[x+i][x]=k++; } f(x+1,len-2); } int main() { int n,i,j; cin>>n; f(0,n); for(i=0;i<n;i++) { for(j=0;j<n;j++) { cout<<left<<setw(4)<<M[i][j]; } cout<<endl; } return 0; }
- 1
信息
- ID
- 2838
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者