一道有道实习生笔试算法题分析
2013-05-09 10:27
267 查看
一、题目:
给出一个数字(10,000~100,000,000),把这个数字拆分成4段,怎样使得4段的乘积最小。比如12345拆分成1*2*3*45=270,
10000=1*00*0*0=0。
二、分析:
这是一个典型的DP问题,假设dp[i][j]表示分成i段,且字符串指针移动到第j位时的最小乘积。 则显然i<=j.
num[i][j]是数字中从第i个数字到第j个数字组成的数字。则可以得到DP的状态方程:
dp[i-][j-k]表示当数字分成i-1段,且字符串指针移动第j-k位时的状态,因为(i-1)<=(j-k) ,所以要求k<=j-i+1。
由状态方程很容易得出对应的结果:
本题是分成4段,很容易得到dp[4][5] 输出结果是:270.
三、代码如下:
给出一个数字(10,000~100,000,000),把这个数字拆分成4段,怎样使得4段的乘积最小。比如12345拆分成1*2*3*45=270,
10000=1*00*0*0=0。
二、分析:
这是一个典型的DP问题,假设dp[i][j]表示分成i段,且字符串指针移动到第j位时的最小乘积。 则显然i<=j.
num[i][j]是数字中从第i个数字到第j个数字组成的数字。则可以得到DP的状态方程:
dp[i-][j-k]表示当数字分成i-1段,且字符串指针移动第j-k位时的状态,因为(i-1)<=(j-k) ,所以要求k<=j-i+1。
由状态方程很容易得出对应的结果:
i\j | 1 | 2 | 3 | 4 | 5 |
1 | 1 | 12 | 123 | 1234 | 12345 |
2 | - | 2 | 23 | 234 | 2345 |
3 | - | - | 6 | 68 | 690 |
4 | - | - | - | 24 | 270 |
5 | - | - | - | - | 120 |
三、代码如下:
#include<stdio.h> #define MAXN ((1<<31)-1) //极大值 char A[10]; int num[10][10]; int dp[10][10]; //将对应字符串的制定位置转换为整数。 int getInt(int i,int j) { int temp=0,k; for(k=i-1;k<=j-1;k++) temp=temp*10+(A[k]-'0'); return temp; } int main() { int i,j,k,len,temp,min; while(scanf("%s",A)!=EOF) { k=0; while(A[k]!='\0') k++; len=k; //获得字符串的长度 if(len<5||len>9) return 0; //长度必须是5到9 for(i=1;i<=len;i++) for(j=i;j<=len;j++) num[i][j]=getInt(i,j); for(j=1;j<=len;j++) dp[1][j]=getInt(1,j); //初始化分割为1时的状态 for(i=2;i<=len;i++) for(j=i;j<=len;j++) { min=MAXN; for(k=1;k<=j-i+1;k++) { temp=dp[i-1][j-k]*num[j-k+1][j]; if(temp<min) min=temp; } dp[i][j]=min; if(j!=len) printf("%d ",dp[i][j]); else printf("%d\n",dp[i][j]); } printf("分成4段时,最小的分割方法是:%d\n",dp[4][len]); } return 0; }
相关文章推荐
- 数字字符串一道有道实习生笔试算法题分析
- 阿里巴巴一道笔试算法题分析…
- 阿里巴巴2015算法工程师实习生笔试卷解题分析
- 炒冷饭 《从一道笔试题谈算法优化》全文【作者: 恋花蝶】
- Linux fork函数详细图解-同时分析一道腾讯笔试题
- 试卷: 阿里巴巴2017实习生笔试题(二) 错题分析
- 一道简单又不简单的算法笔试题
- 【网易游戏——数据分析/数据挖掘/BI】暑期实习生笔试(中大专场)——2017/04/13
- (转)炒冷饭 《从一道笔试题谈算法优化》全文(下)
- 大数乘法的几种算法分析及比较(2014腾讯南京笔试题)
- 洗牌算法与tencent的一道笔试题
- 阿里巴巴2011届实习生招聘笔试题及分析
- 每日一道算法题:Google 2009年某笔试题:求出元素位于0到9之间的集合A中大于某个给定正整数K的组成的最小正整数。
- 阿里巴巴2015算法工程师实习生笔试卷
- 一道有意思的题-腾讯2012年实习生笔试加分题
- 大数乘法的几种算法分析及比较(2014腾讯南京笔试题)
- 2015有道实习生研发笔试
- 大数乘法的几种算法分析及比较(2014腾讯南京笔试题)
- 一道算法题的数学分析
- 腾讯实习生的一道笔试题