首页 > 代码库 > hdu1010
hdu1010
大意:在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;}
hdu1010
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。