首页 > 代码库 > HDOJ1015看懂题之后的简单粗暴
HDOJ1015看懂题之后的简单粗暴
/* 看懂题意之后,给定target和大写字符串,即是: 把ABCDE……转换为12345…… 在给定的不重复数之中找5个数,使得其 满足a-b^2+c^3-d^4+e^5等于给定的数target 由于数据量不大,最大为20个不重复大写字母, 不多说,5重for循环搞定 */ #include <iostream> #include <algorithm> #include <stdio.h> #include <math.h> #include <map> #include <set> #include <vector> #include <string> #include <cstring> #include <sstream> using namespace std; #define input freopen("input.txt","r",stdin); #define output freopen("output.txt","w",stdout); #define For1(i,a,b) for (i=a;i<b;i++) #define For2(i,a,b) for (i=a;i<=b;i++) #define Dec(i,a,b) for (i=a;i>b;i--) #define Dec2(i,a,b) for (i=a;i>=b;i--) #define Sca_d(x) scanf("%d",&x) #define Sca_s(x) scanf("%s",x) #define Sca_c(x) scanf("%c",&x) #define Sca_f(x) scanf("%f",&x) #define Sca_lf(x) scanf("%lf",&x) #define Fill(x,a) memset(x,a,sizeof(x)) #define MAXN 0x7fffffff int a,b,c,d,e; int book[30]; int ans[10]; int main() { int x,i,j,k,l; char ch[20]; while(cin>>x>>ch) { if (!x) break; Fill(book,0); Fill(ans,0); l=strlen(ch); For1(i,0,l) book[ch[i]-64]++;//数字字符统计 For2(a,1,26) if (book[a]) For2(b,1,26) if (a!=b&&book[b]) For2(c,1,26) if (c!=a&&c!=b&&book[c]) For2(d,1,26) if (d!=a&&d!=b&&d!=c&&book[d]) For2(e,1,26) if (e!=a&&e!=b&&e!=c&&e!=d&&book[e]) if (a-b*b+c*c*c-d*d*d*d+e*e*e*e*e==x) ans[1]=a,ans[2]=b,ans[3]=c,ans[4]=d,ans[5]=e;//直接暴力到最后一组 if (ans[1]==0)//如果直到搜索完毕还没有解的话,no cout<<"no solution"; else For2(i,1,5) printf("%c",ans[i]+64);//记得将其转换为字符输出 cout<<endl; } return 0; }
HDOJ1015看懂题之后的简单粗暴
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。