n==4和n==5时,五张牌都知道。
n==1时,只知道一张牌,不能凑出。
n==2时,如果两张牌相加为m,则能凑出。
n==3时,如果3张中的2张或是剩下2张相加为m,则能凑出。
#include<string> #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> using namespace std; int n,m; int a[10]={}; int main() { int x; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>x; a[x]=1; } if(m<3||m>9) { cout<<"no"<<endl; return 0; } if(n==5||n==4) cout<<"yes"<<endl; else if(n==1) cout<<"no"<<endl; else { int vis=0; if(n==3) { for(int i=1;i<=5;i++) for(int j=1;j<=5;j++) if(i!=j) { if(i+j==m) { if(a[i]==1&&a[j]==1) vis=1; if(a[i]==0&&a[j]==0) vis=1; } } } if(n==2) { for(int i=1;i<=5;i++) for(int j=1;j<=5;j++) if(i!=j) { if(i+j==m) { if(a[i]==1&&a[j]==1) vis=1; } } } if(vis) cout<<"yes"<<endl; else cout<<"no"<<endl; } printf("\n"); return 0; }