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也是醉了,誰吃飽了撐得拿鋼絲去拉圈。這就是普通的電線杆拉線鋼絲繩而已,肯定用鐵絲咯。還有說鋁絲的,鋁絲能把鋼絲拉成這樣?鐵絲,你這是線杆上的吧 鐵絲或鋼絲 不是什麼特殊材料 鉛絲,也叫鏽絲,是不是很軟?外面纏的是鐵絲。這個就是電線柱固定線配件 線圈是什麼樣的?是一根導線,一圈一圈的纏繞起來嗎?...
舌頭有白色一圈,舌頭上起了一圈一圈白色的怎麼回事
潰瘍,敷上一點白砂糖,不要嚥下嘔。多幾次,一天就好。疼不疼?看起來像是上火起潰瘍了 我的舌頭最近怎麼老出現白色的圈圈 就是一圈白 圈 考慮是鵝口瘡引起的症狀,建議到醫院口腔科確診,多飲水,多吃蔬菜和水果,不要食用辛辣刺激性食物 舌頭上起了一圈一圈白色的怎麼回事 你好,根據你的描述,但是沒有看到 考慮...