约瑟夫问题这样做哪里不对

来源:百度知道 编辑:UC知道 时间:2024/09/22 12:33:29
#include<iostream>
using namespace std;
int main(){
const int m=3;
const int n=7;
int i=0,p,count;
int per[n];
for(i=0;i<n;i++)
per[i]=1;
i=0;p=n;count=0;
while(p>1)
{
if(per[i]=1) count++;
if(count=m) {per[i]=0;
count=0;
p--;}
i=(i+1)%n;
}
for(i=0;i<n;i++)
if(per[i]=1)break;
cout<<i;
return 0;
}
为什么得不到结果 帮我修改下这个程序 O(∩_∩)O谢谢

应该是粗心了:)


if(per[i]=1)break;
改为:
if(per[i]==1)break;

#include <iostream.h>
#include <windows.h>
typedef struct Josephu
{
int num;
Josephu *pNext;
}Jose,*pLink;

pLink CreateRing(int n); //建立循环链表
pLink DelLink(pLink pDel); //删除节点
void JosePhuToDel(pLink pJose,int num,int step,int k); //解决JosePhu问题
void main()
{
int num,step,k;
pLink pJose;
cout<<"请输入全部人数: ";
cin>>num;
if(num<0)
num=-num; //确保为正数
cout<<"请输入报数人序号: ";
cin>>k;
if(k<0)
k=-k;
cout<<"请输入序号为几出列: ";
cin>>step;
if(step<0)
step=-step;

pJose=CreateRing(num);
JosePhuToDel(pJose,num,step,k);
}