使用vector,输入数据后排序,首先让田忌的每匹马发挥最大价值(挑战和自己差距最小且能赢的马),比完之后删除。之后田忌剩下的马一定不能战胜齐王,就尽量追求平局。
#include using namespace std; int main(){ int a; while(cin>>a&&a!=0){ int i,j=0,k,num=0,l,m,n; vector a1; vector a2; a1.reserve(2001); a2.reserve(2001); for(i=0;i>k; a1.push_back(k); } for(i=0;i>k; a2.push_back(k); } sort(a1.begin(),a1.end()); sort(a2.begin(),a2.end()); for(j=0;j =0;k--){ if(a1[j]>a2[k]){ num+=200; a1[j]=a1[a1.size()-1]; a1.pop_back(); sort(a1.begin(),a1.end()); a2[k]=a2[a2.size()-1]; a2.pop_back(); sort(a2.begin(),a2.end()); j=j-3; if(j<0) j=0; k=k+1; if(k>a2.size()-1) k=a2.size()-1; }} } if(a1.size()==1&&a1[0]>a2[0]){//a1.size()==1的特殊处理 num+=200; a1.pop_back(); a2.pop_back(); } for(m=0;m