zoj1820.cpp

来自「最近在acm.zju.edu.cn上通过的题目的代码」· C++ 代码 · 共 38 行

CPP
38
字号
#include <algorithm>
using namespace std;

int num[10010];
int n;

int main(){
    while (scanf("%d", &n) != EOF && n != 0){
        if ((n * (n + 1)) % 4 != 0){
            printf("0\n\n"); continue;
        }
        printf("%d\n", n);
        int i, j, p, k;
        for (i = 1; i <= n; i++) num[i] = i;
        for (i = 1; i <= n; i++){
            for (j = 1; j <= n; j++) 
                if (num[j] > 0) break;   
            if (j <= n){
                printf("%d ", j);
                num[j]--;
                p = n - j;
                if (p & 1 == 1 && p > 2){
                    printf("%d ", j + 1);
                    num[j+1]--;
                }
                for (k = j + 2; k < n; k++){
                    printf("%d ", k);
                    num[k]--;
                }
                printf("%d\n", n);
                num[n]--;
            }
        }
        puts(""); 
    }
    return 0;   
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?