zoukankan      html  css  js  c++  java
  • SGU 109 Magic of David Copperfield II

    SGU_109

        一开始没有看到Ki是有范围限制的,于是构造了一个最简单的情况,先挪1步,然后把除左上角3个以外全删掉,然后再挪3步,除左上角外两个也删掉。返回的结果是PE,也着实让我困扰了一阵子。

        虽然上面出错了,不过最基本的构造思想还是有了:①如果移动奇数步,那么只可能移到和当前格子的曼哈顿距离是奇数的位置,这样相当于把棋盘进行了黑白染色,奇数步只能走到异色的区域,偶数步只能走到同色的区域。②我们可以先让观众移动N步,然后用类似上面的办法,一点点把观众逼到左上角即可。

    #include<stdio.h>
    #include<string.h>
    int N;
    void solve()
    {
    int i, j, x, y, n;
    printf("%d", N);
    for(i = 2; i < N; i ++)
    for(j = N - i + 1; j < N; j ++)
    printf(" %d", i * N + j + 1);
    printf("\n");
    n = (N % 2 ? N + 2 : N + 1);
    for(i = N; i >= 1; i --)
    {
    printf("%d", n);
    n += 2;
    for(x = 0, y = i; x < N && y >= 0; x ++, y --)
    {
    if(y >= N)
    continue;
    printf(" %d", x * N + y + 1);
    }
    printf("\n");
    }
    }
    int main()
    {
    while(scanf("%d", &N) == 1)
    {
    if(N == 2)
    {
    printf("3 4\n");
    printf("5 2 3\n");
    }
    else
    solve();
    }
    return 0;
    }


  • 相关阅读:
    计算机存储单位
    TcpListener、TcpClient
    JobConf
    JobClient
    python正则方法
    c#列表操作
    C#解析xml
    C#字符串操作函数
    Binding
    Name和:Name
  • 原文地址:https://www.cnblogs.com/staginner/p/2300793.html
Copyright © 2011-2022 走看看