問題描述:
魔術師手裡一共有13張牌,全是黑桃,1~13.
魔術師需要實現乙個魔術:這是十三張牌全部放在桌面上(正面向下),
第一次摸出第一張,是1,翻過來放在桌面上。
第二次摸出從上往下數第二張,是2,翻過來 放在桌面上,(第一張放在最下面去,等會兒再摸),
第三次摸出從上往下數第三張,是3,翻過來放在桌面上,(第一張和第二張 放在最下面去,等會兒再摸)
以此類推 最後一張就是13
#include #include using namespace std;typedef struct node
node;
node *create(int n)
p->next=h;
h=p;
return(h);//h為迴圈鍊錶尾指標
}int display(node * h)
if(i) coutwhile(p->num)//已填入元素,可以當成已從鍊錶中刪去
}q=p->next;
while(q->num)//已填入元素,可以當成已從鍊錶中刪去
q->num=i;
p=q;
}return 0;
}int main()
魔術師發牌問題(單迴圈鍊錶)
魔術師發牌問題,魔術師拿出13張黑桃撲克牌表演魔術,對底下觀眾講道,我只要數數就知道這張牌是什麼,然後數到1翻出來第一張a,並將a拿出來放到桌子上,用剩下的牌,重新數,數到2拿出來第2張牌.以此內推,求魔術師用怎樣的牌序才能達到此目的。首先分析問題,我們可以得到乙個大致的類似鍊錶牌序為 1 2 3 ...
魔術師發牌問題
說有乙個魔術師,他表演發牌的魔術,他將十三張黑桃牌放在一堆。然後開始數數,第一次,他數1,然後翻開第一張,果然是黑桃a,然後將黑桃a放到牌堆外。然後魔術師繼續數數,這次他數1,2,然後將數1的牌放到牌堆底,然後將數2的牌翻開,果然是黑桃2,然後將黑桃2放到一邊。繼續數1,2,3,果然每次都是對應的牌...
魔術師發牌問題
先搞清楚題意 注意按順序每翻到一張牌放到桌子上,不在手中了,其實是迴圈鍊錶的問題,可以在紙上模擬一下就可以得到牌開始的順序。1 一開始寫的比較麻煩 用兩個迴圈鍊錶,乙個放數字,乙個放序號,邊構造邊刪除,因為翻出來的牌已經放在一邊不在手上了,再用乙個card陣列存放開始的牌的順序。include st...