算法竞赛入门经典-开灯问题

来源:互联网 发布:c语言函数或 编辑:程序博客网 时间:2024/05/22 18:22

作为一个刚学的人,别人都说好简单的一本书,就这道题纠结得死去活来,这题用0与1模拟了开关灯问题,非常巧妙!

#include <stdio.h>
#include <string.h>
#define Maxn 1005
int a[Maxn];
int main()
{
    int n,k;
    memset(a,0,sizeof(a));
    scanf("%d,%d",&n,&k);
    int i=1;
    for(i;i<=k;i++)
    {
        int j=1;
        for(j;j<=n;j++)
        {
            if(j%i==0)
                a[j]=!a[j];
        }
    }
    int j=1;
    for(j;j<=n;j++)
    {
        if(a[j]==1)
            printf("%d ",j);
    }
}
/*思路是按照书上的思路走的,先定义一个数组来模拟灯的数量,之后初始化表示全部关闭,因为是按照倍数控制开关灯的,如j%i==0,表示这个人能够按下这灯的开关*/

0 0
原创粉丝点击