hdu4433 locker
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<string> using namespace std; char s1[1005],s2[1005]; int dp[1005][10][10]; int main() { int len,d1,d2,i,j,k,x,y; while(~scanf("%s%s",s1,s2)) { len=strlen(s1); memset(dp,0x3f,sizeof dp); dp[0][0][0]=0; for(i=0;i<len;i++) { for(j=0;j<10;j++)//枚举i+1位 { for(k=0;k<10;k++)//i+2位 { d1=(s2[i]-s1[i]-j+20)%10;//向上 d2=(10-d1)%10;//向下 for(x=0;x<=d1;x++) for(y=0;y<=x;y++) dp[i+1][(k+x)%10][y]=min(dp[i][j][k]+d1,dp[i+1][(k+x)%10][y]); for(x=0;x<=d2;x++) for(y=0;y<=x;y++) dp[i+1][(k-x+10)%10][(10-y)%10]=min(dp[i][j][k]+d2,dp[i+1][(k-x+10)%10][(10-y)%10]); } } } printf("%d\n",dp[len][0][0]); } return 0; }
补充:软件开发 , C++ ,