码迷,mamicode.com
首页 > 其他好文 > 详细

hdu1010

时间:2014-09-13 12:00:15      阅读:139      评论:0      收藏:0      [点我收藏+]

标签: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;
}

hdu1010

标签:style   blog   color   io   os   ar   for   div   sp   

原文地址:http://www.cnblogs.com/vegg117/p/3969604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!