hdu 4433—— locker
2013-10-16 22:49
302 查看
动态规划
#include<cstdio> #include<cstring> #include<iostream> using namespace std; #define INF 1100000 char s1[1100],s2[1100]; int a[1100],b[1100],n; int dp[1100][10][10]; void deal() { for(int i=1;i<=n;i++) a[i]=s1[i-1]-'0'; for(int i=1;i<=n;i++) b[i]=s2[i-1]-'0'; } int dfs(int ii,int xx,int yy ) { if(ii<=1) return min((a[1]-yy+20)%10,(yy-a[1]+20)%10); if(dp[ii][xx][yy]!=-1) return dp[ii][xx][yy]; dp[ii][xx][yy]=INF; int up=(yy-a[ii]+20)%10; for(int i=0;i<=up;i++) for(int j=0;j<=i;j++) dp[ii][xx][yy]=min(dp[ii][xx][yy], dfs(ii-1,(b[ii-2]-j+20)%10,(xx-i+20)%10)+up); int down=10-up; for(int i=0;i<=down;i++) for(int j=0;j<=i;j++) dp[ii][xx][yy]=min(dp[ii][xx][yy], dfs(ii-1,(b[ii-2]+j+20)%10,(xx+i+20)%10)+down); return dp[ii][xx][yy]; } int main() { while(cin>>s1>>s2) { n=strlen(s1); deal(); memset(dp,-1,sizeof(dp)); printf("%d\n",dfs(n,b[n-1],b )); } return 0; }
相关文章推荐
- hdu 4433 locker(DP,4级)
- HDU 4433 locker(三维dp)
- HDU 4433 locker 2012 Asia Tianjin Regional Contest 状态压缩DP
- HDU 4433 locker 状态压缩DP
- [HDU 4433]locker[DP]
- hdu 4433 locker(DP,4级)
- hdu 4433 locker
- HDU 4433 locker
- HDU 4433 locker(12年天津,DP)
- HDU 4433 locker (线性dp)
- hdu 4433 locker (dp)
- HDU 4433 locker(DP)(2012 Asia Tianjin Regional Contest)
- hdu 4433 locker(DP)
- HDU 4433 locker
- ACM练级日志:HDU 4433 Locker
- HDU 4433 locker 2012 Asia Tianjin Regional Contest 减少国家DP
- HDU 4433 locker(SPFA+DP)
- UVA 1631 Locker(HDU 4433)(DP)
- HDU 4433 locker
- HDU 4433 locker(DP)( UVA 1631 - Locker)