开灯问题(算法竞赛入门经典)
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;
}
以上是关于开灯问题(算法竞赛入门经典)的主要内容,如果未能解决你的问题,请参考以下文章
《算法竞赛入门经典(第2版)》pdf下载在线阅读,求百度网盘云资源