1. 程式人生 > >開燈問題(算法競賽入門經典)

開燈問題(算法競賽入門經典)

地方 wrong ios iomanip 報錯 man wro 裏的 memset

#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;
}

開燈問題(算法競賽入門經典)