约瑟夫问题

来源:互联网 发布:淘宝打印t恤打印机骗局 编辑:程序博客网 时间:2024/06/07 14:35
#include<stdio.h>
#include<malloc.h>
void fun(int a[],int n){
 for(int i=0;i<n;i++){
  a[i]=i+1;
 }
}
int Num(int a[],int n){
 int count=0;
 for(int i=0;i<n;i++){
  if(a[i])
   count++;
 }
 return count;
}
int Find(int a[],int n){
 for(int i=0;i<n;i++){
  if(a[i])
   return a[i];
 }
 return 0;
}
void Print(int a[],int n){
 for(int i=0;i<n;i++){
  printf("%d ",a[i]);
 }
 printf("\n");
}
int main(){
 int n,m,temp;
 int k=0;
 scanf("%d",&n);
 scanf("%d",&m);
 int * a=(int *)malloc(sizeof(int)*n);
 fun(a,n);
 temp=m;
 while(Num(a,n)!=1){
  if(a[k]){
   temp--;
   if(temp==0){
    a[k]=0;
    temp=m;
    Print(a,n);
   }
  }
  k++;
  if(k==n){
   k=0;
  }
 }
 printf("finalman=%d\n",Find(a,n));
 return 0;
}
原创粉丝点击