魔術師發牌問題

2022-08-27 22:09:15 字數 1386 閱讀 7339

就是有一堆牌,先跳過零張,翻出第一張為一,然後跳過一張,翻出第二張為2。。。。

被跳過的牌放在最下面。。。。

typedef struct

node

node;

void circle_init(node *head, const

intlen);

void circle_set(node *head, const

intlen);

void circle_print(node *head);

void circle_des(node *head);

intmain()

;

printf(

"輸入牌的張數:");

scanf("%d

", &len);

circle_init(&head, len);

circle_set(&head, len);

circle_print(&head);

circle_des(&head);

return0;

}void circle_init(node *head, const

intlen)

}void circle_set(node *head, const

intlen)

p = p->next;

}p->data = len-left + 1

; left -= 1

; }

}void circle_print(node *head)

while(p != head->next);

printf("\n

");}void circle_des(node *head)

while(p->next != head->next);

free

(p);

head->next =head;

}

順便感嘆一下吧,小學大約三年級的時候玩這個遊戲,是每次都固定跳過一張,翻出第二張。。。。被要求給十三張牌排好順序,讓翻出來依次為 1,2,3,4。。。。

我就想說,如果回到小學三年級,我會用三列a-k的牌;

第一列按照從1,2,3,。。。順序排開:

1,2,3,4,5,6,7,8,9,10,11,12,13

第二列,直接從1,2,。。13順序排成一疊,然後,按照遊戲規則,跳過一張,翻出一張,將翻出的牌依次牌好:

2,4,6,8,10,。。。

將第一列牌中第二列的牌分別替換成它對應的牌,啊,有點繞:

簡單點說,就是2是第乙個被翻出來的,但是我們期望它是1,所以,將第一列牌中間的2所在的位置,換成1;4所在的位置換成2;6所在的位置換成3.。。。。。

額。。。。沒聽懂就當我沒說吧。。。。。

魔術師發牌問題

說有乙個魔術師,他表演發牌的魔術,他將十三張黑桃牌放在一堆。然後開始數數,第一次,他數1,然後翻開第一張,果然是黑桃a,然後將黑桃a放到牌堆外。然後魔術師繼續數數,這次他數1,2,然後將數1的牌放到牌堆底,然後將數2的牌翻開,果然是黑桃2,然後將黑桃2放到一邊。繼續數1,2,3,果然每次都是對應的牌...

魔術師發牌問題

先搞清楚題意 注意按順序每翻到一張牌放到桌子上,不在手中了,其實是迴圈鍊錶的問題,可以在紙上模擬一下就可以得到牌開始的順序。1 一開始寫的比較麻煩 用兩個迴圈鍊錶,乙個放數字,乙個放序號,邊構造邊刪除,因為翻出來的牌已經放在一邊不在手上了,再用乙個card陣列存放開始的牌的順序。include st...

魔術師發牌問題

問題描述 魔術師手中有a 2 3 j q k十三張黑桃撲克牌。在表演魔術前,魔術師已經將他們按照一定的順序疊放好,有花色的一面朝下。魔術表演過程為 一開始,魔術師數1,然後把最上面的那張牌翻過來,是黑桃a 然後將其放到桌面上 第二次,魔術師數1 2 將第一張牌放到這些牌的最下面,將第二張牌翻轉過來,...