生活随笔
收集整理的這篇文章主要介紹了
【C++】小猫钓鱼纸牌游戏--C++实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小貓釣魚問題:
描述:初始,兩個人各有n張牌(牌面0-10),順序固定,只能按順序出牌。然后,兩個人輪流在桌面上以接龍的方式出牌,當某個人放置的牌在桌面上已經出現時,他收起相同牌面及其中間的牌作為自己的籌碼,同時需要再放一張牌到桌面。某人手上的牌出完后,另一個人繼續出,直到兩人手上都沒牌為止,輸出結束時兩個人手上的籌碼數。
#include<iostream>using namespace std
;struct queue
{int head
; int tail
; int data
[100];
};struct stack
{int data
[100];int top
;
};int main() {int res1
= 0, res2
= 0;queue q1
, q2
;stack s
; int n
;int book
[11]; q1
.head
= q1
.tail
= 1;q2
.head
= q2
.tail
= 1; s
.top
= 1; for (int i
= 1; i
<= 10; ++i
) {book
[i
] = 0; }cin
>> n
;for (int i
= 1; i
<= n
; ++i
) {cin
>> q1
.data
[q1
.tail
];++q1
.tail
; } for (int i
= 1; i
<= n
; ++i
) {cin
>> q2
.data
[q2
.tail
];++q2
.tail
;}while (q1
.head
< q1
.tail
|| q2
.head
< q2
.tail
) {loop
:if (q1
.head
< q1
.tail
) {int t
= q1
.data
[q1
.head
];if (book
[t
] == 0) { q1
.head
++; s
.data
[s
.top
] = t
;s
.top
++; book
[t
] = 1;}else { q1
.head
++;++res1
; while ((s
.data
[--s
.top
]) != t
) {++res1
;book
[s
.data
[s
.top
]] = 0;}book
[s
.data
[s
.top
]] = 0; ++res1
;book
[s
.data
[s
.top
]] = 0;goto loop
;}}loop2
:if (q2
.head
< q2
.tail
) {int t
= q2
.data
[q2
.head
];if (book
[t
] == 0) { q2
.head
++; s
.data
[s
.top
] = t
;s
.top
++; book
[t
] = 1;}else { q2
.head
++;++res2
; while ((s
.data
[--s
.top
]) != t
) {++res2
;book
[s
.data
[s
.top
]] = 0;}book
[s
.data
[s
.top
]] = 0; ++res2
;book
[s
.data
[s
.top
]] = 0;goto loop2
;}}}cout
<< res1
<< " " << res2
;system("pause");return 0;
}
總結
以上是生活随笔為你收集整理的【C++】小猫钓鱼纸牌游戏--C++实现的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。