题解 | #打牌#计数手中牌面值
打牌
https://www.nowcoder.com/practice/82442ee76977479e8ab4b88dfadfca9f
#include<iostream> using namespace std; int num[10]; bool func(string a, string b) { // 判断是否可以压过对方牌 int len = b.size(); //对方牌数 if (len < 5) { //非顺子,从对方牌面值后面找 for (int i = b[0] - '0'; i <= 9; i++) { if (num[i] >= len) { //手头有大于对方出牌张数的牌 return true; } } } else { //出的顺子 for (int i = b[0] - '0' + 1, j = 0; i <= 9;i++) { //i表示从对方顺子的开头开始找 //j用来计数顺子牌数 if (num[i]) j++; //有这张牌 else j = 0; //重新计数 if (j == 5) return true; } } return false; } int main() { string a,b; cin>>a>>b; int len = b.size(); int n = a.size(); for(int i=0;i<n;i++) { num[a[i]-'0']++; //统计本人的牌数 } if(func(a, b)) cout<<"YES"<<endl; else cout<<"NO"<<endl; return 0; }