zoukankan      html  css  js  c++  java
  • P1996 约瑟夫问题

    P1996 约瑟夫问题

    AC1

    数据量少,暴力模拟 12ms

    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <cstdio>
    using namespace std;
    
    int main(){
        vector<int> ans;
        int personnum,number;
        scanf("%d%d",&personnum,&number);
        int nums[100];
        for (int i = 0; i < personnum; ++i) {
            nums[i]=i+1;
        }
        int flag = 0;
        int sum = 0;
        for (int j = 0; j < personnum; ++j) {
            if(nums[j]==0&&j==personnum-1){
                j=-1;
                continue;
            }
            if(nums[j]!=0&&j==personnum-1){
                flag++;
                if(flag%number==0){
                    cout<<nums[j]<<" ";
                    nums[j]=0;
                    flag = 0;
                    sum++;
                }
                j=-1;
                continue;
            }
            if(nums[j]==0)
                continue;
            flag++;
            if(flag%number==0){
                cout<<nums[j]<<" ";
                nums[j]=0;
                flag = 0;
                sum++;
            }
            if(sum==personnum)
                break;
        }
        return  0;
    }
    

    AC2 使用循环链表

    也是12ms。。。

    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <cstdio>
    #include <list>
    
    using namespace std;
    int main() {
        list<int> persons;
        int personnum, number;
        scanf("%d%d", &personnum, &number);
        for (int i = 0; i < personnum; ++i)
            persons.push_back(i + 1);
        int target = 0;
        for (list<int>::iterator it = persons.begin(); it != persons.end();) {
            target++;
            if (target == number) {
                cout << *it << " ";
                it = persons.erase(it);//这步易错
                target = 0;
            } else it++;
            if (it == persons.end())
                it = persons.begin();
            cout << (persons.begin() == persons.end());
            //3 6 9 2 7 1 8 5 10 4
        }
        return 0;
    }
    
  • 相关阅读:
    高级选项更改MathType数学公式样式
    tp 批量转码
    create the web service by yourshelf
    云通讯 添加群组
    sql 更新字段
    op bug 修复计划
    php ut8声明
    PHP 包含文件
    php 判断查询结果是否为空
    合并列值
  • 原文地址:https://www.cnblogs.com/sunqiangstyle/p/10312270.html
Copyright © 2011-2022 走看看