?? thejosephuwreathproblemsolves.txt
字號:
置標志
#include<stdio.h>
void priList(int *prilist,int count) //打印表prilist的前count的元素
{
int priloop;
for(priloop=0;priloop<count;priloop++)
{
printf("%-4d",prilist[priloop]);
}
printf("\n****************************************\n");
}
void Josephu() //Josephu算法求解
{
int listlen,position,stand; //記錄表長,所求元素位置,和引入間隔數
int loop; //循環計數器
int newpos; //記錄前進步伐
int *Joselist,*newlist;
printf("\n####### N REPRENT THE LENTH OF THE LIST########\n");
printf("N="); //提示輸入表長度
scanf("%d",&listlen);
printf("########## X REPRENT WHO WILL STAND UP#########\n");
printf("X="); //輸入間隔數
scanf("%d",&stand);
Joselist=(int *)malloc(listlen*sizeof(int)); //根據輸入的長度分配空間大小
newlist=(int*)malloc(listlen*sizeof(int)); //建新表
for(loop=0;loop<listlen;loop++) //按順序將Joselist添滿
Joselist[loop]=loop+1;
printf("****************************************\n"); //打印出原表
printf(" PRIMARY LIST \n");
priList(Joselist,listlen);
newpos=0;
position=0;
while(newpos<listlen) //尋找所求元素
{
loop=0;
while(loop<stand-1)
{
while(Joselist[position]==-1)
position=(position+1)%listlen;
position=(position+1)%listlen;
loop++;
}
while(Joselist[position]==-1)
position=(position+1)%listlen; //找到所求
newlist[newpos++]=Joselist[position]; //所求元素進新表
Joselist[position]=-1; //在該元素在原表中的位置添加標志-1
}
printf("****************************************\n");
printf(" NEW LIST \n"); //打印新表即所求
priList(newlist,listlen);
}
main()
{
Josephu();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -