《算法竞赛入门经典》第三章(蛇形填数)

来源:互联网 发布:大数据公司被收购 编辑:程序博客网 时间:2024/06/05 20:27

自己的

#pragma warning(disable:4996)#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<vector>#include<algorithm>#include<iostream>#include<time.h>#include<map> #include<set>#include<sstream>#include<functional>#include<cassert>#include<list>#include<iterator>#include<utility>#include <stdexcept>  #include <sstream>#include <fstream> #include<unordered_map>#include<unordered_set>using namespace std;using namespace std::placeholders;int a[1050][1050];int main(){    memset(a, 0, sizeof(a));    int n;    while (cin >> n)    {        memset(a, 0, sizeof(a));        int count = 1;        int x, y;        x = 0;        y = n - 1;        while (count <= n*n)        {            int i = 0;            while (i < n&&a[x][y] == 0)            {                a[x++][y]=count++;                i++;            }            x--;            y--;            i = 0;            while (i < n-1&&a[x][y] == 0)            {                a[x][y--] = count++;                i++;            }            y++;            x--;            i = 0;            while (i < n-1&&a[x][y] == 0)            {                a[x--][y] = count++;                i++;            }            x++;            y++;            i = 0;            while (i < n-2&&a[x][y] == 0)            {                a[x][y++] = count++;                i++;            }            y--;            x++;        }        for (int i = 0; i < n; i++)        {            for (int j = 0; j < n; j++)                printf("%5d", a[i][j]);            cout << endl;        }    }    return 0;}

白书的

#pragma warning(disable:4996)#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<vector>#include<algorithm>#include<iostream>#include<time.h>#include<map> #include<set>#include<sstream>#include<functional>#include<cassert>#include<list>#include<iterator>#include<utility>#include <stdexcept>  #include <sstream>#include <fstream> #include<unordered_map>#include<unordered_set>using namespace std;using namespace std::placeholders;int a[1050][1050];int main(){    int n, x, y, tot = 0;    scanf("%d", &n);    memset(a, 0, sizeof(a));    tot = a[x = 0][y = n - 1] = 1;    while (tot < n*n)    {        while (x + 1 < n&&!a[x + 1][y])a[++x][y] = ++tot;        while (y - 1 >= 0 && !a[x][y - 1])a[x][--y] = ++tot;        while (x - 1 >= 0 && !a[x - 1][y])a[--x][y] = ++tot;        while (y + 1 <= n&&!a[x][y+1])a[x][++y] = ++tot;    }    for (int i = 0; i < n; i++)    {        for (int j = 0; j < n; j++)            printf("%5d", a[i][j]);        cout << endl;    }    return 0;}

= =刘如佳这程序我感觉真心不好理解

0 0
原创粉丝点击