约瑟夫问题
2016-01-26 21:56
267 查看
#include<iostream>
#include<cstdio>
#include<malloc.h>
using namespace std;
bool pd(int a[],int n);
int p(int a[],int n);
int main()
{
int n,m,a[302]={0},biao[302],i,j; //biao来表示a中的元素是否被使用过
//printf("请输入n,m");
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){a[i]=i;biao[i]=1;}
for(i=1,j=1;i<=m;) //i用来计数,j表示下标
{
if(i==m)
{
if(biao[j]!=0)
{
a[j]=0;
i=1;
biao[j]=0;
if(j==n)
{ if(pd(a,n)){break;}
j=1;
}
else
{
if(pd(a,n)){break;}
j++;
}
}
else
{
if(j==n)
{
if(pd(a,n)){break;}
j=1;
}
else
{
if(pd(a,n)){break;}
j++;
}
}
}
else
{
if(biao[j]!=0)
{ if(pd(a,n)){break;}
i++;
if(j==n)
{
if(pd(a,n)){break;}
j=1;
}
else{ if(pd(a,n)){break;}j++;}
}
else
{
if(j==n)
{ if(pd(a,n)){break;}
j=1;
}
else{if(pd(a,n)){break;}j++;}
}
}
}
printf("%d",p(a,n));
return 0;
}
int p(int a[],int n)
{
int i;
for(i=1;i<=n;i++)
{
if(a[i]!=0){return i;}
}
return 0;
}
bool pd(int a[],int n)
{
int i,sum=0;
for(i=1;i<=n;i++)
{
if(a[i]!=0){sum++;}
}
if(sum==1){return true;}
else{return false;}
}
#include<cstdio>
#include<malloc.h>
using namespace std;
bool pd(int a[],int n);
int p(int a[],int n);
int main()
{
int n,m,a[302]={0},biao[302],i,j; //biao来表示a中的元素是否被使用过
//printf("请输入n,m");
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){a[i]=i;biao[i]=1;}
for(i=1,j=1;i<=m;) //i用来计数,j表示下标
{
if(i==m)
{
if(biao[j]!=0)
{
a[j]=0;
i=1;
biao[j]=0;
if(j==n)
{ if(pd(a,n)){break;}
j=1;
}
else
{
if(pd(a,n)){break;}
j++;
}
}
else
{
if(j==n)
{
if(pd(a,n)){break;}
j=1;
}
else
{
if(pd(a,n)){break;}
j++;
}
}
}
else
{
if(biao[j]!=0)
{ if(pd(a,n)){break;}
i++;
if(j==n)
{
if(pd(a,n)){break;}
j=1;
}
else{ if(pd(a,n)){break;}j++;}
}
else
{
if(j==n)
{ if(pd(a,n)){break;}
j=1;
}
else{if(pd(a,n)){break;}j++;}
}
}
}
printf("%d",p(a,n));
return 0;
}
int p(int a[],int n)
{
int i;
for(i=1;i<=n;i++)
{
if(a[i]!=0){return i;}
}
return 0;
}
bool pd(int a[],int n)
{
int i,sum=0;
for(i=1;i<=n;i++)
{
if(a[i]!=0){sum++;}
}
if(sum==1){return true;}
else{return false;}
}
相关文章推荐
- 设计模式—命令模式
- 求1+2+3+...+n
- iOS MD5加密 —— HERO博客
- 作为一个新人,怎样学习嵌入式Linux?
- 【C#】.NET提供了哪些类型来实现反射
- css学习笔记20160125分组嵌套选择器尺寸显示
- plsql中文字符不能匹配
- startActivityForResult用法详解
- LVM基本概念、管理
- java String源码学习
- poj-1990-MooFest(树状数组)
- WPF当属性值改变时利用PropertyChanged事件来加载动画
- Android Application Fundamentals——Android应用程序基础知识
- C++ DirectX 游戏开发初级视频教程 17 资源下载链接
- AngularJS动态绑定ng-options的ng-model
- 欢迎使用CSDN-markdown编辑器
- html5 表单元素
- 《笨办法学Python》 第24课手记
- HDU 2089 不要62(数位dp)
- java模拟get/post请求