标签:style blog color io os ar for div sp
大意:在5--12个字符中找到满足给出等式的字符串,并是按照字典序最大的串。
对字符串排序,每次挑选5个可能最大的字符,进行匹配,不符合,则把其中最小的换掉。通过简单的暴力枚举就可实现。
例如:s=987654; 枚举:98765-98764-98756-98754……
#include <iostream> #include <string> #include <algorithm> #include <math.h> using namespace std; bool cmp(char c1, char c2) { if(c1>c2) return true; else return false; } int main() { string s; int target; int k1,k2,k3,k4,k5; string result; while(true){ cin>>target>>s; if(target==0 && s=="END") break; sort(s.begin(), s.end(), cmp); int len=s.size(); result=""; for(k1=0; k1<len; k1++){ for(k2=0; k2<len; k2++){ if(k1==k2) continue; for(k3=0; k3<len; k3++){ if(k3==k1 || k3==k2) continue; for(k4=0; k4<len; k4++){ if(k4==k3 || k4==k2 || k4==k1) continue; for(k5=0; k5<len; k5++){ if(k5==k1 || k5==k2 || k5==k3 || k5==k4) continue; if(s[k1]-‘A‘+1-(s[k2]-‘A‘+1)*(s[k2]-‘A‘+1) + pow((s[k3]-‘A‘+1)*1.0,3) - pow((s[k4]-‘A‘+1)*1.0,4) +pow((s[k5]-‘A‘+1)*1.0,5)==target){ result=result+s[k1]+s[k2]+s[k3]+s[k4]+s[k5]; goto here; } } } } } } here: if(result != "") cout<<result<<endl; else cout<<"no solution"<<endl; } return 0; }
标签:style blog color io os ar for div sp
原文地址:http://www.cnblogs.com/vegg117/p/3969604.html