zoukankan      html  css  js  c++  java
  • 约瑟夫环1

    有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。

    Input

    第一行输入小孩的人数N(N<=64)
    接下来每行输入一个小孩的名字(人名不超过15个字符)
    最后一行输入W,S (W < N),用逗号","间隔
    Output
    按人名输出小孩按顺序出列的顺序,每行输出一个人名
    Sample Input
    5
    Xiaoming
    Xiaohua
    Xiaowang
    Zhangsan
    Lisi
    2,3
    Sample Output
    Zhangsan
    Xiaohua
    Xiaoming
    Xiaowang
    Lisi

    约瑟夫环问题:将名字用string数组存好,index数组代表下标,根据w和s计算出要踢出去的下标index[w],之后重新编排下标。
    for (int i = w; i < n - 1; i++)
    index[i] = index[i + 1];
    (G++通过,c++ compiling error)

    #include<iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    int n, w, s;
    string name[70];
    int index[70];
    int main() {
    cin >> n;
    for (int i = 0; i < n; i++) {
    cin >> name[i];
    index[i] = i;
    }
    scanf("%d,%d", &w, &s);
    w = (w + n - 1) % n;
    do
    {
    w = (w + s - 1) % n;
    cout << name[index[w]] << endl;
    for (int i = w; i < n - 1; i++)
    index[i] = index[i + 1];
    } while (--n);
    return 0;
    }

     
  • 相关阅读:
    Nginx 部署多个 web 项目(虚拟主机)
    Nginx 配置文件
    Linux 安装 nginx
    Linux 安装 tomcat
    Linux 安装 Mysql 5.7.23
    Linux 安装 jdk8
    Linux 安装 lrzsz,使用 rz、sz 上传下载文件
    springMVC 拦截器
    spring 事务
    基于Aspectj 注解实现 spring AOP
  • 原文地址:https://www.cnblogs.com/0211ji/p/13138646.html
Copyright © 2011-2022 走看看