『ジョセフ生者死者ゲーム』アルゴリズムC言語版
1764 ワード
アルゴリズムの授業の上の1つの小さい練習、線形の構造の表現と実現の2------順序表の簡単な応用《ジョセフの生者の死者のゲーム》
問題の説明と解の構想はソースコードの中ですでに注釈して、攻撃の参考、後ろの1部は最初に書いたので、効率はきわめて低くて、反面の教材としました.
次は効率の低いアルゴリズムです
問題の説明と解の構想はソースコードの中ですでに注釈して、攻撃の参考、後ろの1部は最初に書いたので、効率はきわめて低くて、反面の教材としました.
#include<stdio.h>
/*
——
:
:
:30 , , , ; ,
, 。 , , 30
, , , 9 , , 1
, 9 , , , 15 。
。
: 30 1-30, 0;
0 1 1, , number%30,
0 number+1 0 , , 。
count 9 , status +1;
*/
void main(){
int status=0;//
int a[30];
int i=0;
int number=0;// , 1~
int count=0;//1-9
//
for(i;i<30;i++)
a[i]=i+1;
// begin
while(status<15){
if(a[number%30]!=0){
if(count==8){
a[number%30]=0;
number++;
count=0;
status++;
printf(" %d %d
",status,number%30);
}
else{
count++;
number++;
}
}
else
number++;
}
//
printf(" :");
for(i=0;i<30;i++)
if(a[i]!=0)
printf("%d,",a[i]);
}
次は効率の低いアルゴリズムです
#include <stdio.h>
void main(){
int a[30];
int status=0;
int number=1;
int j=1;
int k=1;
int i=1;
int q=1;
for(j;j<=30;j++){
a[j-1]=j;
}
while(status<15){
while(i<9){
while(a[(number-1)%30]==0){
number++;
}
i++;
number++;
}
i=1;
while(a[(number-1)%30]==0){
number++;
}
a[(number-1)%30]=0;
number++;
status++;
k=1;
while(k<=30){
printf("%d,",a[k-1]);
k++;
}
printf("
");
}
printf("over
,");
}