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

Posted nk-007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开灯问题(算法竞赛入门经典)相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include "stdafx.h"
#include <iostream>
#include<time.h>
#include<iomanip>
#include<string.h>
#define maxn 1005
using std::cin;
using std::cout;
int a[maxn];//数组a[]的定义要放在全局位置,再在主函数内进行赋值操作,否则会报错
int main() {
    memset(a, 0, sizeof(a));
    int n, k, first = 1;
    cout << "Please enter two numbers:" << std::endl;
    cin >> k >> n;
    if (k <= n && n << 1000) {
        for (int i = 1; i <= k; i++) {//每人操作一次,所以外循环是人
            for (int j = 1; j <= n; j++) {//每盏灯都要被每个人操作一次,所以内循环是人
                if (j%i == 0)
                    a[j] = !a[j];//非常有趣的地方
                for (int m = 0; m <= n; m++) {
                    if (a[m]) {
                        if (first) first = 0;//这里的first是为了避免多余的首元素输出
                        else cout << m << std::endl;
                    }
                }
            }
        }
    }
    else
        cout << "Wrong number" << std::endl;
}
































以上是关于开灯问题(算法竞赛入门经典)的主要内容,如果未能解决你的问题,请参考以下文章

开灯问题--------《算法竞赛入门指导》P83

《算法竞赛入门经典(第2版)》pdf下载在线阅读,求百度网盘云资源

《算法竞赛入门经典(第二版)》pdf

算法竞赛入门经典(第2版)+算法艺术与信息学竞赛pdf-高清版免费下载

《算法竞赛入门经典》之“算法设计与优化策略”

《算法竞赛入门经典》5.12TeX括号