NYOJ

//http://acm.nyist.net/JudgeOnline/problem.php?pid=33
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int *a; int row, tmp_row; int num = 1; int i, j; int loc; scanf("%d", &row); i = 0; j = row - 1; tmp_row = row; a = (int *)malloc(row*row*sizeof(int)); memset(a, 0, row*row*sizeof(int)); while (tmp_row) { //蛇向下移动。 while (i < tmp_row) { //判断蛇是否在可用的行内。不符和条件,证明本方向移动结束 loc = i* row + j; if (*(a + loc)) { i--; break; }//判断位置是否已经被蛇占用了,占用,证明本方向移动结束 *(a + loc) = num++; i++;//对行数加一,移动到下一个位置 } if (i >= tmp_row) i--;//如果移动出可用行,返回行内 j--;//因为返回的位置,此位置已经被使用过。通过j--修正到正确的位置,下面同理 while (j >= 0) { loc = i* row + j; if (*(a + loc)) { j++; break; } *(a + loc) = num++; j--; } if (j < 0) j++; i--; while (i >= 0) { loc = i* row + j; if (*(a + loc)) { i++; break; } *(a + loc) = num++; i--; } if (i < 0) i++; j++; while (j <tmp_row) { loc = i* row + j; if (*(a + loc)) { j--; break; } *(a + loc) = num++; j++; } i++; tmp_row--; } loc = 0; for (i = 0; i < row; i++) { for (j = 0; j < row; j++) { printf("%d ", *(a + loc)); loc++; } printf(" "); } return 0; }
//http://acm.nyist.net/JudgeOnline/problem.php?pid=63

#include <stdio.h>
#include <string.h>
#include <math.h>

int visit[1000010];

#define init(arr, value) memset(arr, value, sizeof(arr))
#define max(a, b) return a > b ? a : b

int main()
{
    int deep, node, num, i, k; //deep为二叉树的深度
    while (scanf("%d%d", &deep, &num) && deep && num)
    {
        init(visit, 0);
        node = pow((double)2, deep) - 1; //结点个数
        for (int i = 1; i <= num; ++i)
        {
            k = 1;
            while (true)
            {
                visit[k] = !visit[k];
                if (visit[k])
                {
                    k = k * 2; //左孩子
                }
                else
                {
                    k = k * 2 + 1; //右孩子
                }
                if (k > node)
                {
                    break;
                }
                    
            }
        }
        printf("%d
", k / 2); //k为叶子结点的左孩子,所以除2
    }
    return 0;
}
//http://acm.nyist.net/JudgeOnline/problem.php?pid=117
//http://blog.csdn.net/dlengong/article/details/7594919

逆序数的求法~~
原文地址:https://www.cnblogs.com/virusdefender/p/3395090.html