8-1 煎饼 Uva120(简单的颠倒子序列)

include

include

include

int cmp(const void *_a, const void _b) {
int
a = (int )_a;
int
b = (int *)_b;

return *a - *b;

}

void swap(int a[], int i, int j) {
while (i < j) {
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
i++;
j--;
}
}

int main() {

int a[35], b[35], n;


while (scanf("%d", &a[0]) != EOF) {
    // 接收输入的数字
    n = 1;
    if (getchar() != '\n')
        while (scanf("%d", &a[n++]))
            if (getchar() == '\n')  break;

    // 输出原先的序列并复制一份给b数组
    for (int i=0; i=0; i--) {
        // 如果a[i]的值在排好序的位置就不执行下面的for循环
        if (a[i] == b[i])   continue;
        for (int j=i-1; j>=0; j--) {
            // 如果a[i]的值与位置不符就从前面找到该位置的数
            if (b[i] == a[j]) {
                // 如果该数在第0个位置就直接交换
                if (j == 0) {
                    printf("%d ", n - i);
                    swap(a, 0, i);
                }
                // 如果不在第0个位置就先交换到第0位置再交换到相应位置
                else {
                    printf("%d ", n - j);
                    swap(a, 0, j);
                    printf("%d ", n - i);
                    swap(a, 0, i);
                }
            }
        }
    }

    printf("0\n");
}

return 0;

}

你可能感兴趣的:(8-1 煎饼 Uva120(简单的颠倒子序列))