1樓:匿名使用者
首先按正常約瑟夫環程式推出由1開始報數,每報5個就退出隊伍,最後是誰最後出隊,然後看這個最後出隊的人和第一個的位置關係,推出應該由第幾個報數,最後是第1個人出隊。
如最後一個是原來排第3的人出隊,它和第一個人之間差了2位,則應該由(1+10)-(3-1)=9,由第9個人開始報數,則最後一個就是第一個人出隊
參考程式,n為佇列人數
#include
void main()
;scanf("%d",&n);
f=0; s=0;
while(f for(i=1;i<=n;i++) if(a[i]==0) }printf("\n"); for(i=1;i<=n;i++)if(a[i]==0)break; printf("由第%d個人開始報數,最後第一人出隊\n",10+1+(1-i)); system("pause");} 2樓:匿名使用者 這個問題,你可以逆方向先從這個元素開始,輸出最後一個元素,就是正向你要找的開始數。 3樓:匿名使用者 倒著推吧...就是1l的說法 c語言 約瑟夫環問題:使用者輸入m,n值,從1至n開始順序迴圈數數,每數到m輸出該數值,直至全部輸出。 4樓: //用動態陣列完成的約瑟夫環 #include #include main() d[i]=0; //第m個數數過清0 printf("%d ",i+1); //輸出數到的第m個數,就是陣列元素的下標 total++; //記錄已經被輸出的資料總數 }system("pause");} 5樓:匿名使用者 幫你改了程式 #include #include struct number ;void main () else tail->next=p; tail=p; }tail->next=head; p = tail; //從head開始,記錄開始的前一個指標while(n--) //剩下的數的個數為nprintf("\n");} 6樓:天嵐蜻蜓天使 -9804520751 約瑟夫環問題,從第一個人開始數,數到二的人出列 j**a 用c++編寫約瑟夫環的**,也就是出圈問題,n個人,數到k出圈,接著從1開始數,一直到最後一個人,
20 7樓:匿名使用者 #include using namespace std; int main() { int n,s,m; cout<<"please input the valuse of n,m,s"<>n>>m>>s; if(n<=0||s<=0||m<=0) { cout<<"error"<1;k--){ i=((i+m-1)%k);//計算要報數人序號if(i!=k-1) { temp=a[i]; for(j=i;j=0;k--) {cout< 約瑟夫環問題的輸出結果是多少? 8樓:匿名使用者 ||對於n個數字(0,1,2.....n-1)排成一圈,每次刪除第m個數字的情況,有遞推公式: 則根據這 版個公式,實現的**為: #include using namespace std; int lastremaining(unsigned int n, unsigned int m) int main() 最後的結果為: 我去,你來 這程式居然能編譯過去,我很 自無語。1 看到第三行int a 既然是常量初始化,你搞個空怎麼可以,main裡面int a n n是你輸入的資料,編譯器不知道值,怎麼可能編譯過去你這需要用到動態分配,int a a new int n 你宣告的全域性的a陣列應該去掉,沒什麼用,還引起歧義2... 8 第一次迴圈p是指向2的,用 s控制輸出就是2010,第二次迴圈p增1指向0了,輸出自然是010。這很好理解。9 早期的編譯器是2位元組,後來的編譯器是4位元組了,所以二者都正確。一般教科書用的是早期的系統,應該是2位元組。不要糾結這些,知道就行了,若考試,按幾位元組算會明示的。10 001011... 我16號做的手術 手術費用 藥物 一共 1200左右!掛泌尿外科 就說包皮過長!包皮環切手術後的一些問題 我半年前做的手術 腫沒有問題,再過兩天慢慢就消了 沒有紗布的話,主要防止感染 其實也可以自己包紮的。就是用新的消毒紗布 藥店有賣 浸上利凡諾藥水以後再把小dd包好。不要浸的太多,會影響通風 經常...c 單迴圈連結串列的約瑟夫環問題,要求輸出全部出隊順序。程式掛
c語言問題求解,C語言程式設計問題 約瑟夫問題求解
包皮環切手術的問題,包皮環切手術後的一些問題