码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-06-12 13:34:14      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:max   number   first   算法   定义   using   std   入门   个人操作   

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

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

标签:max   number   first   算法   定义   using   std   入门   个人操作   

原文地址:https://www.cnblogs.com/NK-007/p/9172481.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!