當前位置:編程學習大全網 - 編程軟體 - 貓把N只老鼠站成壹圈,第壹只開始數,數到3就把這只吃掉,又從下壹只開始數,直到剩下最後壹只把它放生。

貓把N只老鼠站成壹圈,第壹只開始數,數到3就把這只吃掉,又從下壹只開始數,直到剩下最後壹只把它放生。

約瑟夫問題de題目是

n個人(編號0~(n-1)),從0開始報數,報到(m-1)的退出,剩下的人繼續從0開始報數。求勝利者的編號。

題目不壹樣.所以其數學公式不能用..我編了個 能運行卻求不出結果 沒辦法拉 我剛入門 也寫了半天

自己改進下吧

#include "stdio.h"

void kl(int a[],int n);

main()

{

int a[102]={-1},i,k,n,x;

scanf("%d",&x);

for(i=1;i<x;i++)

a[i]=i;

for(i=1;i<x;i++)

if(i%3==0)

{

a[i]=-1;n++;

}

for(i=1,k=1;k<x;k++,i=k)

{

while(a[i]==-1)

{

i++;

}

a[k]=a[i];

a[i]=-1;

}

kl(a,(x-n));

}

void kl(int a[],int n)

{

int x=1,i,k=0,b=0;

for(i=1;i<=n;i++)

{

if(i%3==0)

{

a[i]=-1;

b++;

}

}

n=b;

for(i=1,k=1;k<x;k++,i=k)

{

while(a[i]==-1)

{

i++;

}

a[k]=a[i];

a[i]=-1;

if(n>2)

kl(a,(x-n));

else

{

for(i=1;i<x;i++)

if(a[i]!=-1)printf("\n%d\n",a[i]);

}

}

}

  • 上一篇:13年福特全順遙控器匹配方法
  • 下一篇:如何計算g73編程U
  • copyright 2024編程學習大全網