HDOJ 1015 Safecracker
来源:互联网 发布:网络课程建设方案 编辑:程序博客网 时间:2024/05/20 07:53
题目大意:输入一段字符串和一个整数target,从中要求找出最大的字符串组VWXYZ,使得v-w^2+x^3-y^4+z^5=target(其中v,w,z,y,z的值为V,W,X,Y,Z在字母表中的位序。
解题思路:经典的DFS,题目要求找出最大的,要先对字符串字符进行从大到小排序。
源代码:
#include<iostream>#include<string>#include<string.h>using namespace std;string s;char jieguo[6];int sum,visit[12],flag,size;char zhongjian;int suanshu(int n,int shu){ int sum; sum=1; for(int i=0;i<n;i++) sum*=shu; if(n%2==1) return sum; else return -sum;}void dfs(int cut,int n);int main(){ while(cin>>sum) { cin>>s; if(sum==0&&s=="END") break; memset(visit,0,sizeof(visit)); size=s.size(); for(int i=0;i<size;i++) for(int j=i+1;j<size;j++) if(s[j]>s[i]) { zhongjian=s[j]; s[j]=s[i]; s[i]=zhongjian; } flag=0; dfs(0,0); if(flag==0) cout<<"no solution"<<endl; } return 0;}void dfs(int cut,int n){ if(flag==1) return; if(cut==5&&n==sum) { for(int i=0;i<5;i++) cout<<jieguo[i]; cout<<endl; flag=1; return; } if(cut>=5) return; for(int i=0;i<size;i++) { if(visit[i]==0) { visit[i]=1; jieguo[cut]=s[i]; dfs(cut+1,n+suanshu(cut+1,s[i]-'A'+1)); visit[i]=0; } } return;}当前水平评级:4
0 0
- HDOJ 1015 Safecracker
- HDOJ 1015 Safecracker
- hdu/hdoj 1015 Safecracker
- HDOJ 1015 Safecracker
- HDOJ 1015 Safecracker
- hdoj 1015 Safecracker 【dfs】
- hdoj 1015 Safecracker
- HDOJ 1015 Safecracker-DFS
- hdoj 1015 Safecracker【DFS】
- hdoj 1015 Safecracker 【DFS】
- HDOJ-1015Safecracker(DFS)
- HDOJ HDU 1015 Safecracker
- hdoj 1015 Safecracker
- HDOJ 1015 Safecracker
- HDOJ 1015 Safecracker 简单搜索
- hdoj 1015 Safecracker---盗窃贼
- HDOJ 1015 Safecracker(DFS)
- HDOJ/HDU 1015 Safecracker(深搜)
- c++类模版
- 第九周项目三——输出星号图
- C# 中的委托和事件
- Xcode没有pch文件
- java变量基础
- HDOJ 1015 Safecracker
- Windows线程、界面、消息剖析
- 第九周项目二 分数的累加
- Linux ALSA声卡驱动六之ASoC架构中的Machine
- 第九周项目一(3)——求1000以内的所有偶数之和
- 主成分分析(PCA)及白化(ZCA)
- 他和她的终于
- c# 窗体初体验
- ubuntu man 汉化