分类讨论情况少了,删两个数的情况还有几种没列出来,并且顺序要按照出现的最大值递增顺序(比如删5,5比删2,8要好),我下面这样分类讨论可以过: if(sum%3==1)//要删掉1 { if(mp.count(1)) mp[1]--; else if(mp.count(4)) mp[4]--; else if(mp.count(7)) mp[7]--; else if(mp[2]>=2) mp[2]-=2; else if(mp[2]>=1&&mp[5]>=1) mp[2]--,mp[5]--; else if(mp[5]>=2) mp[5]-=2; else if(mp[2]>=1&&mp[8]>=1) mp[2]--,mp[8]--; else if(mp[5]>=1&&mp[8]>=1) mp[5]--,mp[8]--; else if(mp[8]>=2) mp[8]-=2; } if(sum%3==2) { if(mp.count(2)) mp[2]--; else if(mp.count(5)) mp[5]--; else if(mp.count(8)) mp[8]--; else if(mp[1]>=2) mp[1]-=2; else if(mp[1]>=1&&mp[4]>=1) mp[1]--,mp[4]--; else if(mp[4]>=2) mp[4]-=2; else if(mp[1]>=1&&mp[7]>=1) mp[1]--,mp[7]--; else if(mp[4]>=1&&mp[7]>=1) mp[4]--,mp[7]--; else if(mp[7]>=2) mp[7]-=2; else { cout<<-1<<endl; continue; }
点赞 1

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务