题目链接:click here~~
【题目大意】两人玩牌,每次比较第一张牌的大小,放到底部,问最后谁赢,如果一直循环,则输出-1
【解题思路】设置两个队列,按照题目意思模拟一下即可,注意在循环一定次数下仍然没有结果,则无解
代码:
<span style="font-family:SimSun;font-size:14px;">#include <bits/stdc++.h> using namespace std; const int N=1e6; queue <int>va,vb; int main() { int t,a,b,n,m; scanf("%d",&t); scanf("%d",&n); for(int i=0; i<n; i++) { scanf("%d",&a); va.push(a); } scanf("%d",&m); for(int i=0; i<m; i++) { scanf("%d",&b); vb.push(b); } int s=0; while(!va.empty()&&!vb.empty()) { s++; if(s>N) break; int vah=va.front(); int vbh=vb.front(); va.pop(); vb.pop(); if(vah<vbh) { vb.push(vah); vb.push(vbh); } if(vah>vbh) { va.push(vbh); va.push(vah); } } if(va.empty()||vb.empty()) { if(va.empty()) { printf("%d 2\n",s); } else printf("%d 1\n",s); } else puts("-1"); return 0; }</span>
时间: 2024-10-07 14:42:10