• CSU 1997-Seating Arrangement


    Seating Arrangement

    Mr. Teacher老师班上一共有n个同学,编号为1到n。 在上课的时候Mr. Teacher要求同学们从左至右按1, 2, …, n的顺序坐成一排,这样每个同学的位置是固定的,谁没来上课就一目了然了。

    但是时间长了之后,Mr. Teacher发现坐得离得远的同学往往因为交流很少而逐渐变得生疏了,于是他决定重新安排同学们的座位,并且在新的座位安排中,任意两个相邻的同学的编号之差的绝对值都必须大于d。

    现在Mr. Teacher需要你帮忙给出一个座位安排方案。

    Input
    输入包含不超过100组数据。 每组数据包含两个整数n, d(4 ≤ n ≤ 100, 1 ≤ d ≤ n − 2)。

    Output
    对于每组数据,用一行输出一个可行的座位安排方案,相邻两个数之间用一个空格隔开。 座位安排方案由n个1到n的数组成,从左到右依次描述了各个座位安排给了哪个编号的同学。 如果有多种可行的座位安排方案,输出任意一种即可。 如果不存在满足要求的座位安排方案,则输出“-1”。

    Sample Input
    6 1
    6 3
    7 2
    Sample Output
    2 4 6 1 3 5
    -1
    1 4 7 3 6 2 5
    Hint
    对于第一个样例,存在多种可行的方案,如1 3 5 2 4 6,2 5 1 4 6 3,4 6 3 1 5 2等,输出任意一个可行方案即可。

    对于第三个样例,同样存在多种可行方案,输出任意一个可行方案即可。

    题解 :思维题。

    #include<stdio.h>
    #include<string.h>
    int  a[110];
    int n,d;
    int main()
    {
        while(scanf("%d%d",&n,&d )!=EOF){
            if(d>=n/2)//此处为-1的情况。
                printf("-1
    ");
            else
            {
                int t=0,k=0;
                while(k<n)
                {
                    t++;
                    a[k++]=n/2+t;
                    a[k++]=t;
    
                }
                for(int i=0;i<n-1;i++)
                    printf("%d ",a[i] );
                printf("%d
    ",a[n-1] );
            }
    
        }
    
        return 0;
    }
  • 相关阅读:
    python每隔半个小时执行一次实现思维
    计算机网络毕业论文3000字,给学弟做的作业
    计算机毕业论文总结_计算机应用毕业论文
    计算机毕业论文8000字_计算机应用毕业论文
    计算机专业论文3000字_计算机毕业论文8000字
    java浏览器_java游戏网站
    python定时器_python倒计时代码
    javascript语法基础_java教程
    javascript开发自学_没有基础的人学js
    JAVA怎么实现软件和驱动下载
  • 原文地址:https://www.cnblogs.com/-xiangyang/p/9220239.html
Copyright © 2020-2023  润新知