資料結構之 擊鼓傳花

2021-07-05 21:48:40 字數 1960 閱讀 5546

2015/10/16/

///by xbw//

//環境  vs2013//

這是我們的資料結構的乙個作業題,乙個小作業之所以上部落格,是希望在此mark一下,祭奠我失去的兩天時光,以此警醒我要讀明白題目之後再做題;先看一下被自己坑了的題目;

home

web board

problemset

standing

status

statistics

time limit: 1 sec  

memory limit: 2 mb

submit: 1429  

solved: 497 [

submit][

status][

web board]

設有n個人圍成乙個圈,每人手裡都握著乙個令牌寫明乙個數字(隨機生成的)。從第乙個人開始玩「擊鼓傳花」遊戲,第乙個擊的次數為其令牌上寫明的數字數(假設為m1)。第m1個人出列。下次再從第m1+1個人開始新的「擊鼓傳花」擊的次數也為其令牌上寫明的次數,等於該次數的人出列。重複以上過程直到所有人都出列為止。

輸入第一行為測試資料組數。每組測試資料2行,第1行乙個整數n(1<=n<=10000),代表人數,第2行有n個空格隔開的整數代表mi(1<=mi<=5000)。

對每組測試資料輸出2行,第1行為資料組數,第2行為所有人順序出隊的序列,格式見樣例。 1

51 2 3 4 5

case #1:

2 1 3 4

考察知識點:迴圈鍊錶,時間複雜度o(sum),空間複雜度o(n)

從1開始,傳1次:1->2。2出列。

從3開始,傳3次:3->4->5->1。1出列。

從3開始,傳3次:3->4->5->3。3出列。

從4開始,傳4次:4->5->4->5->4。4出列。

[ submit][

status][

web board]

這個就是我們的題目,就是因為沒有看清楚是輸出玩家手中的號碼牌還是玩家的順序,不是輸出號碼牌,而是輸出玩家的位置;

看一下傷心的**吧

#include using namespace std;

typedef struct lnode

*linklist;

void creatlist(linklist *l)

void insertlist(linklist *l, int t)//給鍊錶賦值

}void destroylist(linklist *l)

delete(*l);

*l = null;

}void clearlist(linklist *l) /* 改變l */

(*l)->next = *l; /* 頭結點指標域指向自身 */

}int main()

insertlist(&l, t);

l = p;

t--;

int first = 1;

while (t--)

int con = p->data;

for (int i = 0; i < con; i++)

if (con - i == 1)

p = p->next;

}if (first)

else

s = q->next;//刪除指標

q->next = s->next;

delete(s);

p = q;

} cout << endl;

clearlist(&l);

destroylist(&l);

}}

心好痛

你們看了是什麼感覺呢,

希望大家能簡化一下程式,指出不必要的操作,或者更好的方法,謝謝大家了,以後還是讀明白題再做吧

擊鼓傳花 Python

有多少種不同的方法可以使得從小賽手裡開始傳的花,傳了m次以後,又回到小賽手裡。對於傳遞的方法當且僅當這兩種方法中,接到花的同學按接球順序組成的序列是不同的,才視作兩種傳花的方法不同。比如有3個同學1號 2號 3號,並假設小賽為1號,花傳了3次回到小賽手裡的方式有1 2 3 1和1 3 2 1,共2種...

coro學習 擊鼓傳花

這個是協程的經典例子。之前有一篇erlang和stackless比較的文章有詳細介紹。用perl的coro實現了一下。程式沒有很好地優化架構,不過便於閱讀。usr bin env perl coro測試程式testcoro11.pl perl版的擊鼓傳花 erlang和stackless的經典例子 ...

題目 《擊鼓傳花》

description 設有n個人圍成乙個圈,每人手裡都握著乙個令牌寫明乙個數字 隨機生成的 從第乙個人開始玩 擊鼓傳花 遊戲,第乙個擊的次數為其令牌上寫明的數字數 假設為m1 第m1個人出列。下次再從第m1 1個人開始新的 擊鼓傳花 擊的次數也為其令牌上寫明的次數,等於該次數的人出列。重複以上過程...