poj safecracker1248

来源:互联网 发布:js 转化成数字类型 编辑:程序博客网 时间:2024/06/04 17:48

1.不读题的教训,以为没有结果是什么都不输出,END输出no solution

其实是end不输出,没有结果输出no solution


2.pow函数默认为doule类型,但poj上要进行强制转换


以下算法时间复杂度较低


#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;char letters[15];int value[15],target;void solve(int len){    int a,b,c,d,e;    for(a=0;a<len;a++)    for(b=0;b<len;b++)        if(a!=b)    //去除重复元素,在这写可以减少时间复杂度    for(c=0;c<len;c++)        if(a!=c&&b!=c)    for(d=0;d<len;d++)        if(a!=d&&b!=d&&c!=d)    for(e=0;e<len;e++)    if(a!=e&&b!=e&&c!=e&&d!=e){                          //找到一种情况                          int temp=value[a]-value[b]*value[b]+value[c]*value[c]*value[c]-value[d]*value[d]*value[d]*value[d]+value[e]*value[e]*value[e]*value[e]*value[e];                           if(temp==target){                            printf("%c%c%c%c%c\n",value[a]+'A'-1,value[b]+'A'-1,value[c]+'A'-1,value[d]+'A'-1,value[e]+'A'-1);                                return;                           }    }      printf("no solution\n");}bool compare(int a,int b){    return a>b;}int main(){    int i;    while(~scanf("%d %s",&target,letters)) //~按位取反    {        if(target==0&&strcmp(letters,"END")==0){            break;        }        i=0;        while(letters[i]){            value[i]=letters[i]-'A'+1;            i++;        }        sort(value,value+i,compare);        solve(i);    }    return 0;}


0 0
原创粉丝点击