杭电acm 1015
来源:互联网 发布:魔兽中机械宠物矩阵 编辑:程序博客网 时间:2024/05/22 07:04
Safecracker
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9270 Accepted Submission(s): 4701
1 ABCDEFGHIJKL11700519 ZAYEXIWOVU3072997 SOUGHT1234567 THEQUICKFROG0 END
LKEBAYOXUZno solutionGHOST
哎学好英语很必须啊!题意纠结了好久!
题意:先输入一个值给 target 和一串大写字母(12个内包含12个)给字符串,然后按 A=1,B=2,......Z=26 的字典序列,搜索5个字母,若满足式子 v-w^2+x^3-y^4+z^5=target, 按字典序列由大到小输出5个字母,否则输出 no solution。当输入为 0 和 END 时结束。注意:每个输入输出字母不能重复!!
一开始想到用暴力穷举法,AC代码如下:
#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){ int target=0,target_1=0,i=0,v=0,w=0,x=0,y=0,z=0,k=0,number[26]={0}; char letters_2,letters[27]={'0'},letters_1[27]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; while(scanf("%d %s",&target,&letters)!=EOF){ if(target==0&&!strcmp(letters,"END"))break; k=0; for(i=0;letters[i]!='\0';i++){}//输入字母个数 for(v=0;v<i;v++){//为每个字母拟值 for(w=0;w<26;w++){ if(letters[v]==letters_1[w]){ number[v]=w+1; } } } for(v=0;v<i;v++){//按值大小排列字母 for(w=v+1;w<i-1;w++){ if(number[v]>number[w]){ x=number[v]; number[v]=number[w]; number[w]=x; letters_2=letters[v]; letters[v]=letters[w]; letters[w]=letters_2; } } } for(v=i-1;k==0&&v>=0;v--){//按字典序列由大到小搜索 for(w=i-1;k==0&&w>=0;w--){ if(w!=v) for(x=i-1;k==0&&x>=0;x--){ if(x!=w&&x!=v) for(y=i-1;k==0&&y>=0;y--){ if(y!=x&&y!=w&&y!=v) for(z=i-1;k==0&&z>=0;z--){ if(z!=y&&z!=x&&z!=w&&z!=v){ target_1=number[v]-number[w]*number[w]+number[x]*number[x]*number[x]-number[y]*number[y]*number[y]*number[y]+number[z]*number[z]*number[z]*number[z]*number[z]; if(target==target_1){ k=1; printf("%c%c%c%c%c\n",letters[v],letters[w],letters[x],letters[y],letters[z]); } } } } } } } if(k==0){ printf("no solution\n"); } }}
而后想到另一个剪枝搜索想法:
v - target ========================== (w^2+y^4) - (x^3+z^5)
v-target = 奇 - 奇 ==== (w^2+y^4) - (x^3+z^5) = 偶 == (偶) - (偶) , 即x+z=偶;
v-target = 偶 - 奇 ==== (w^2+y^4) - (x^3+z^5) = 奇 == (奇) - (奇) , 即x* z=奇;
v-target = 奇 - 偶 ==== (w^2+y^4) - (x^3+z^5) = 奇 == (奇 ) - (奇) , 即x* z=奇;
v-target = 偶 - 偶 ==== (w^2+y^4) - (x^3+z^5) = 偶 == (偶) - (偶) , 即x+z=偶;
- 杭电acm 1015
- 杭电 ACM 1015 --Safecracker
- 奋战杭电ACM(DAY10)1015
- 杭电ACM 1003
- 杭电 ACM 2016
- 杭电acm 1010
- 杭电 acm 1045
- 杭电ACM-1010
- 杭电ACM 1172
- 杭电ACM 1174
- 杭电ACM 1175
- 杭电ACM 分类
- 杭电ACM分类
- 杭电acm 1000
- 杭电acm 1001
- 杭电acm 1002
- 杭电acm分类
- 杭电acm分类
- 用D语言解面试题4
- Hexo中使用多说评论系统
- Json_Ajax 页面交互双向传值
- 【算法】冒泡排序C语言实现
- webpy&apache&wsgi
- 杭电acm 1015
- 《设计模式之禅》——行为类模式大PK
- Java访问性与包的讲解
- 2015.02.05——张佳莉
- libjson编译和使用
- springMVC freemarker实现页面静态化
- 成功的家长必须知道的三十三句话
- codeforces 510D Fox And Jumping
- 【读书笔记】从现在开始就写博客