HDU 4433
来源:互联网 发布:java服务器监控系统 编辑:程序博客网 时间:2024/06/05 16:43
这个题我做的时候yy各种贪心,结果一直WA
可能是情况考虑不全吧,今天生成了些数据,发现贪心果然好多漏洞,比如我就挂这组test:0000 5467
改成暴力枚举就过了
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>using namespace std;char s1[1100],s2[1100];int s[1100];int dp[1100][11][11];int main(){ int i,j,k,p,q,len,step; while(scanf("%s %s",s1,s2)!=EOF){ len=strlen(s1); for(i=0;i<len;i++) s[i]=(s2[i]-s1[i]+10)%10; s[i]=s[i+1]=0; memset(dp,-1,sizeof(dp)); dp[1][s[0]][s[1]]=0; for(i=2;i<len+2;i++){ for(j=0;j<10;j++) for(k=0;k<10;k++){ if(dp[i-1][j][k]==-1)continue; step=10-j; for(p=0;p<=step;p++){ for(q=0;q<=p;q++){ if(dp[i][(k+p)%10][(s[i]+q)%10]==-1) dp[i][(k+p)%10][(s[i]+q)%10]=dp[i-1][j][k]+step; else dp[i][(k+p)%10][(s[i]+q)%10]=min(dp[i][(k+p)%10][(s[i]+q)%10],dp[i-1][j][k]+step); } } step=j; for(p=0;p<=step;p++){ for(q=0;q<=p;q++){ if(dp[i][(k-p+10)%10][(s[i]-q+10)%10]==-1) dp[i][(k-p+10)%10][(s[i]-q+10)%10]=dp[i-1][j][k]+step; else dp[i][(k-p+10)%10][(s[i]-q+10)%10]=min(dp[i][(k-p+10)%10][(s[i]-q+10)%10],dp[i-1][j][k]+step); } } } } int ans=-1,tem=len+1; for(i=0;i<10;i++) for(j=0;j<10;j++){ if(dp[tem][i][j]==-1)continue; if(ans==-1 || ans>dp[tem][i][j]) ans=dp[tem][i][j]; } printf("%d\n",ans); } return 0;}
- HDU 4433
- HDU 4433
- HDU locker 4433
- HDU 4433 locker
- dp hdu-4433 locker
- HDU 4433 locker
- [HDU 4433]locker[DP]
- hdu 4433 locker(DP)
- HDU 4433 locker
- HDU 4433 (DP)
- hdu 4433 Locker dp
- HDU 4433 DP
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- Node与NodeVisitor
- [转载]可扩展多线程异步Socket服务器框架EMTASS 2.0
- 位操作符
- 学习日记-正则表达式
- 平衡二叉树(AVL)
- HDU 4433
- android中利用pull解析xml文件
- 在Dos下运行exe程序的时候出现找不到Cygwin1.dll文件的情况总结
- C语言获取和设置环境变量
- Tomcat7开启CGI支持的方法
- iptables usage
- count(*)和sum(1) 的效率
- C# 与 C++ 数据类型对照
- MySQL的使用