• vector的使用Hdu 4841 Solitary


    圆桌问题

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
    Total Submission(s): 6252    Accepted Submission(s): 2380


    Problem Description
    圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。
     
    Input
    多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767);
     
    Output
    对于每一组数据,输出2n个大写字母,‘G’表示好人,‘B’表示坏人,50个字母为一行,不允许出现空白字符。相邻数据间留有一空行。
     
    Sample Input
    2 3
    2 4
     
    Sample Output
    GBBG
    BGGB
     

    这个题思路其实很简单,就是把坏人踢出去,好人留下来,用vector可以很好的实现,这是数组很难实现的操作,但是用vector做起来就很简单

    代码:

    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main()
    {
        vector<int>table;
        int n,m;
        while(cin>>n>>m){
            table.clear();
            for(int i = 0;i < 2*n; i++)
                table.push_back(i);
            int pos = 0;
            for(int i = 0;i <n; i++){
                pos = (pos+m-1) % table.size();
                table.erase(table.begin() + pos);
            } 
            int j = 0;
            for(int i = 0;i < 2*n; i++){
                if(!(i%50) && i)
                    cout<<endl;
                if(j<table.size() && i==table[j]){
                    j++;
                    cout<<"G";
                }
                else
                    cout<<"B";
            }
            cout<<endl<<endl;
        }
        return 0;
    }
     
     
  • 相关阅读:
    windows程序中的数据绑定
    dbhelper
    数据库错题
    构建布局良好的windows程序
    初始windows程序
    asp.net 文件下载 解决文件名乱码
    asp.net 文件下载 文件名称乱码 处理~~
    ASP.NET上传文件并记录到数据库
    Jquery配合Asp.Net无刷新删除指定服务器上的文件!
    Frame、Iframe、Frameset 的区别
  • 原文地址:https://www.cnblogs.com/jingshixin/p/12236831.html
Copyright © 2020-2023  润新知