2 条题解
-
1
#include <bits/stdc++.h> using namespace std; #define LL long long const int N = 1e2 + 10; const int INF = 0x3f3f3f3f; int n , a[N][N]; void f( int x ) { if ( x == n ) { return; } for ( int i = 1 ; i <= x ; i++ ) { a[ ( n - x ) / 2 ][ ( n - x ) / 2 + i ] = 1; } for ( int i = 1 ; i <= x ; i++ ) { a[ ( n - x ) / 2 + i ][ ( n - x ) / 2 ] = 2; } for ( int i = 1 ; i <= x ; i++ ) { a[ n + 1 - ( n - x ) / 2 ][ ( n - x ) / 2 + i ] = 3; } for ( int i = 1 ; i <= x ; i++ ) { a[ ( n - x ) / 2 + i ][ n + 1 - ( n - x ) / 2 ] = 4; } f( x + 2 ); } int main() { cin >> n; if ( n % 2 == 1 ) { f(1); } else { f(2); } for ( int i = 1 ; i <= n ; i++ ) { for ( int j = 1 ; j <= n ; j++ ) { cout << a[i][j] << " "; } cout << endl; } return 0; } //菜鸟驿站 //老六专属
-
1
递归+超难的模拟(一堆算式)
#include<bits/stdc++.h> using namespace std; const int N=1e2+5,INF=0x3f3f3f3f; typedef long long LL; int n,a[N][N]; void f(int x){ if(x==n)return; for(int i=1;i<=x;i++)a[(n-x)/2][(n-x)/2+i] = 1; for(int i=1;i<=x;i++)a[(n-x)/2+i][(n-x)/2] = 2; for(int i=1;i<=x;i++)a[n+1-(n-x)/2][(n-x)/2+i] = 3; for(int i=1;i<=x;i++)a[(n-x)/2+i][n+1-(n-x)/2] = 4; f(x+2); } int main() { cin>>n; if(n%2==1)f(1); else f(2); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)cout<<a[i][j]<<" "; cout<<endl; } }
特别要注意边长为奇数的方阵和偶数的递归函数是一样的
我后来才发现的
- 1
信息
- ID
- 1037
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- 递交数
- 15
- 已通过
- 7
- 上传者