首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2013-11-01 
(顺序表的应用5.4.2)POJ 1591 M*A*S*H(约瑟夫环问题的变形——变换步长值)/* * POJ_1591_2.cpp * *Created o

(顺序表的应用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;}

热点排行