vb有人圍成一圈編號為016第0號的人

2022-03-02 17:38:28 字數 5022 閱讀 4168

1樓:匿名使用者

絕無可能剩1個人,最後必須剩2個人,剩下的是0,1兩個人

2樓:匿名使用者

private sub command1_click()form1.cls

dim a(1 to 17) as integerdim i as integer, j as integer, k as integer

for i = 1 to 17

a(i) = i - 1

next

i = 0

j = 0

k = 17

do while k > 1

for i = 1 to 17

if a(i) > -1 then

j = j + 1

if j = 3 then

j = 0

print a(i)

a(i) = -1

k = k - 1

end if

end if

next

loop

print "剩下的是:"

for i = 1 to 17

if a(i) > -1 then

print a(i)

exit for

end if

next

end sub

3樓:寒信

唉呀我怎麼看成16個人了,我的演算法和他的一樣,就不貼了

用c語言遞迴寫該題: 有17個人圍成一圈(編號為0~16),從第0號的人開始從1報數,凡是報到3的倍數的人

4樓:

#include

int youxi(int n);

int num[17] = ;

int main()

int youxi(int n)

n = j;

return youxi(n);}}

}我重做了一個:

#include "stdio.h"

int youxi(int *d,int start,int n)else

}int main()

5樓:南柯一夢之小

是遞迴呼叫過深吧,都十幾次了

不考慮時間,可以用陣列儲存

仔細思考,網上也有快速演算法

搜「猴子選大王」就可以了

有n個人圍成一圈,順序排號,從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的

6樓:匿名使用者

弄個三bai元陣列,a[x][y][z],dux儲存它的原序zhi號(即dao1~n),y儲存數數時的序號(即1、專2、3),z儲存該數是否屬曾為3(初始值為0,成為3撥為1)。先令m=n,再巢狀迴圈,外迴圈判斷m是否為1,為1即得到結果跳出迴圈,不是則進入內迴圈,並分類討論(先判斷z是否為1,是的話下一個),關鍵**如下

if(z!=1)

else

}else

else }}

else

else

}最後輸出x的值。你試試吧。(我這段**還能優化,你自己嘗試優化它吧)

7樓:匿名使用者

法一(模擬法):

#include

using std::cin;

using std::cout;

int main()

bool * a = new bool [n+1];

a[0]=false;

for(int i=1;in) x=1;//當人員到達陣列尾,序號重設為1

if(a[x])i++; // 跳過已退出人員

if(i==3)

//當數到3時,退出人員設為false,剩餘人數減1,i設為0,重新計數

}cout<<"留下來的人序號為: "<

法二(遞迴法):

此題可用數學方法求解。

設有n個人(編號0~(n-1)),從0開始報數,報到(m-1)的退出,剩下的人繼續從0開始報數  (用數學方法解的時候需要注意應當從0開始編號,因為取餘會取到0解。)

實質是一個遞推,n個人中最終留下來的序號與n-1個人中留下來的人的序號有一個遞推關係式。

假設除去第k個人,則

0, 1, 2, 3, ..., k-2, k-1, k, ..., n-1          // 原始序列 (1)

0, 1, 2, 3, ..., k-2,      , k, ..., n-1        // 除去第k人,即除去序號為k-1的人   (2)

k, k+1, ..., n-1,    0,    1,        ..., k-2  // 以序號k為起始,從k開始報0  (3)

0, 1,     ..., n-k-1, n-k, n-k+1, ..., n-2   // 作編號轉換,此時佇列為n-1人  (4)

變換後就完完全全成為了(n-1)個人報數的子問題,注意(1)式和(4)式,是同一個問題,不同的僅僅是人數。比較(4)和(3),不難看

出,0+k=k, 1+k=k+1, ... ,(3)式中'0'後面的數字,((n-3)+k)%n=k-3,((n-2)+k)%n=k-2,

對於(3)式中'0'前面的數字,由於比n小,也可看作(0+k)%n=k,  (1+k)%n=k+1,  故可得出規律:

設(3)中某一數為x' , (4)中對應的數為x,則有:x'=(x+k)%n.

設x為最終留下的人序號時,佇列只剩下1人時,顯然x=0; 此時可向前回溯至2人時x對應的序號,3人時x對應的序號……直至n人時x的序號,即為所求。

#include

const int m = 3;

int main()

8樓:匿名使用者

連結抄;www.ff662.com(複製貼上即可)--

-意動用襲法,是指謂語動詞對於它的賓語含有「認為」,「以為」的意思.這種用法僅限於形容詞和某些表心理活動的動詞,它們本不帶賓語,帶了賓語,並具有「認為」,「以為」意義,即是意動用法.

名詞意動用法 在文言文中,有些名詞帶上賓語後,表示主語把賓語當作是什麼.形容詞的意動用法所謂形容詞的意動用法,是指不是說使賓語所代表的人或事物具有這個 形容詞所表示的性質或狀態,而是在主觀上認為他具有這種性質或狀態.例如:

左右以君賤之也,食以草具.(《戰國策·齊策四》)

▼名詞的意動用法

所謂名詞的意動用法,就是把賓語所代表人或事物看成為這個名詞所表示的人或事物.例如:

故人不獨親其親,不獨子其子.(《禮記·禮運》)

c語言程式設計:有n個人圍成一圈,按順序從1到n編號。從第一個人開始,報到3的人退出圈子。

9樓:滄海雄風

#include

struct serial

;void main()

q->next =p->next ;

printf("被刪除的元素:%-4d\n",p->num);

p=q->next ;

}printf("\n最後報號出來的是原來的:%d\n",p->num);}8

被刪除的元素:3

被刪除的元素:6

被刪除的元素:1

被刪除的元素:5

被刪除的元素:2

被刪除的元素:8

被刪除的元素:4

最後報號出來的是原來的:7

press any key to continue

10樓:匿名使用者

此題可用數學方法求解。

設有n個人(編號0~(n-1)),從0開始報數,報到(m-1)的退出,剩下的人繼續從0開始報數  (用數學方法解的時候需要注意應當從0開始編號,因為取餘會取到0解。)

實質是一個遞推,n個人中最終留下來的序號與n-1個人中留下來的人的序號有一個遞推關係式。

假設除去第k個人,則

0, 1, 2, 3, ..., k-2, k-1, k, ..., n-1          // 原始序列 (1)

0, 1, 2, 3, ..., k-2,      , k, ..., n-1        // 除去第k人,即除去序號為k-1的人   (2)

k, k+1, ..., n-1,    0,    1,        ..., k-2  // 以序號k為起始,從k開始報0  (3)

0, 1,     ..., n-k-1, n-k, n-k+1, ..., n-2   // 作編號轉換,此時佇列為n-1人  (4)

變換後就完完全全成為了(n-1)個人報數的子問題,注意(1)式和(4)式,是同一個問題,不同的僅僅是人數。比較(4)和(3),不難看出,0+k=k, 1+k=k+1, ... ,(3)式中'0'後面的數字,((n-3)+k)%n=k-3,((n-2)+k)%n=k-2,

對於(3)式中'0'前面的數字,由於比n小,也可看作(0+k)%n=k,  (1+k)%n=k+1,  故可得出規律:

設(3)中某一數為x' , (4)中對應的數為x,則有:x'=(x+k)%n.

設x為最終留下的人序號時,佇列只剩下1人時,顯然x=0; 此時可向前回溯至2人時x對應的序號,3人時x對應的序號……直至n人時x的序號,即為所求。

#include

const int m = 3;

int main()

return 0;}

11樓:小翼

經典約瑟夫環問題:

// n個人(1..n)圍成一圈,從m開始報數,增量為k// 返回最後一個人的編號,o(n)複雜度;

int josephus(int n,int k,int m)

12樓:匿名使用者

請問這個n有取值範圍嗎?

目前我有兩種思路,一種簡單的方式是用長度為n的陣列記錄,初始化為1,當計數到3是把對應的陣列下標輸出,並賦值為0.依次重複直到只剩下一個1.

第二種還是我的初步構想,找出退出的規律,可能可以用遞迴到n=1的情況。

13樓:華慧

我也不知道 等別人回答吧

c語言有n個人圍成一圈,從人開始報數3,每報

include include using namespace std struct node int main else cout 請輸入第 p code p no i p next first 讓表尾指向表頭形成迴圈連結串列p first cout 出列順序為 for j 1 j n j cou...

外面纏的一圈一圈的是什麼,表外面一圈可以轉的是幹什麼的?

我tm也是醉了,誰吃飽了撐得拿鋼絲去拉圈。這就是普通的電線杆拉線鋼絲繩而已,肯定用鐵絲咯。還有說鋁絲的,鋁絲能把鋼絲拉成這樣?鐵絲,你這是線杆上的吧 鐵絲或鋼絲 不是什麼特殊材料 鉛絲,也叫鏽絲,是不是很軟?外面纏的是鐵絲。這個就是電線柱固定線配件 線圈是什麼樣的?是一根導線,一圈一圈的纏繞起來嗎?...

舌頭有白色一圈,舌頭上起了一圈一圈白色的怎麼回事

潰瘍,敷上一點白砂糖,不要嚥下嘔。多幾次,一天就好。疼不疼?看起來像是上火起潰瘍了 我的舌頭最近怎麼老出現白色的圈圈 就是一圈白 圈 考慮是鵝口瘡引起的症狀,建議到醫院口腔科確診,多飲水,多吃蔬菜和水果,不要食用辛辣刺激性食物 舌頭上起了一圈一圈白色的怎麼回事 你好,根據你的描述,但是沒有看到 考慮...