【ACM】蛇形填数 – 逻辑怪详解编程语言

蛇形填数

时间限制:
3000 ms  |  内存限制:65535 KB
难度:
3
 
描述
在n*n方陈里填入1,2,…,n*n,要求填成蛇形。例如n=4时方陈为:

10 11 12 1

9 16 13 2

8 15 14 3

7 6 5 4
 
输入
直接输入方陈的维数,即n的值。(n<=100)
输出
输出结果是蛇形方陈。
样例输入
3
样例输出
7 8 1 
6 9 2 
5 4 3
  
#include <iostream> 
#include <cmath> 
#include <cstdio> 
 
using namespace std; 
 
int main(){ 
 
    int n; 
    cin>>n; 
    int **a = new int *[n]; 
    for (int i = 0; i < n ; i++) 
    { 
        a[i] = new int[n]; 
    } 
    int sum = 1; 
    int x = 0, y = n-1; 
    int circle = 1; 
    while (sum<n*n) 
    { 
        while (x<n-circle)    //down 
        { 
            a[x][y] = sum++; 
            x++; 
        } 
        while (y>circle-1) 
        { 
            a[x][y] = sum++; 
            y--; 
        } 
        while (x>circle-1) 
        { 
            a[x][y] = sum++; 
            x--; 
        } 
        while (y<n-circle) 
        { 
            a[x][y] = sum++; 
            y++; 
        } 
        x++;y--; 
        circle++; 
    } 
    if (n%2!=0) 
    { 
        a[x][y] = n*n; 
    } 
    int i,j; 
    for (i = 0 ; i < n ; i++) 
    { 
        for (j = 0 ; j < n-1; j++) 
        { 
            cout<<a[i][j]<<" "; 
        } 
        cout<<a[i][j]<<endl; 
    } 
 
    return 0; 
}        

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20689.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论