读书人

(顺序表的应用5.4.2)POJ 1591 M*A*S*H

发布时间: 2013-11-01 14:43:02 作者: rapoo

(顺序表的应用5.4.2)POJ 1591 M*A*S*H(约瑟夫环问题的变形——变换步长值)

/* * POJ_1591_2.cpp * *  Created on: 2013年10月31日 *      Author: Administrator */#include <iostream>#include <cstdio>using namespace std;const int maxn = 55;int cards[25];bool position[maxn];int main(){int participants,lucky;int counter = 1;while(scanf("%d%d",&participants,&lucky)!=EOF){int i,j;for(i = 0 ; i < 20 ; ++i){scanf("%d",&cards[i]);}int left_num = participants;memset(position,1,sizeof(position));for(i = 0 ; left_num > lucky ; ++i){//在left_num>lucky的情况下,不断的扫卡片数组int k = 0;//标记数了多少个人for(j = 0 ; (j <participants) && left_num > lucky ; ++j ){//扫position[]数组if(position[j]){//如果这一个人还在队列里面if(++k == cards[i]){//如果书到了卡片中要求的数字--left_num;//幸存者的人数-1k=0;position[j] = false;//那个人出队}}}}if(counter != 1){printf("\n");}printf("Selection #%d\n",counter++);for(i = 0 ; i < participants ; ++i){if(position[i]){printf("%d ",i+1);}}printf("\n");}return 0;}

读书人网 >编程

热点推荐