ACM(递归递推—M)
2017-03-31 21:07
183 查看
题目:输入一个数n,将n分成若干个数,这些数相乘最大。
解题思路:即看一个数n能分成多少个3,当最后一个数是4时则停止分,此时结果最大。
细节处理:以4为界限来分别讨论。
代码:#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int i,j,a[18]={0},sum=1;
for(i=1;;i++)
{if(n<=4)
{
a[i]=n;
break;
}
if(n>4)
{
n-=3;
a[i]=3;
}}
for(j=1;j<=i;j++)
{
sum*=a[j];
cout<<a[j]<<" ";
}
cout<<endl;
cout<<i<<" "<<sum<<endl;}
return 0;
}
感想:做题时一定要考虑题目的本质,这个题的本质即看一个数n中能分成多少个3,知道最后一个为4为止此时结果最大,考虑到本质时做题才好做,更省力。
解题思路:即看一个数n能分成多少个3,当最后一个数是4时则停止分,此时结果最大。
细节处理:以4为界限来分别讨论。
代码:#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int i,j,a[18]={0},sum=1;
for(i=1;;i++)
{if(n<=4)
{
a[i]=n;
break;
}
if(n>4)
{
n-=3;
a[i]=3;
}}
for(j=1;j<=i;j++)
{
sum*=a[j];
cout<<a[j]<<" ";
}
cout<<endl;
cout<<i<<" "<<sum<<endl;}
return 0;
}
感想:做题时一定要考虑题目的本质,这个题的本质即看一个数n中能分成多少个3,知道最后一个为4为止此时结果最大,考虑到本质时做题才好做,更省力。
相关文章推荐
- ACM-递归递推练习K- 们--加强斐波那契
- ACM(递归递推—G)
- ACm递归递推练习 Problem E
- ACM-递归递推练习L - 马拦过河卒
- ACM递推递归练习E养兔子
- ACM(递归递推—H)
- ACM递推递归练习F计算组合数
- ACM(递归递推—I)
- ACM-递归递推练习M-数值分解
- ACM递推递归练习G
- ACM-递归递推练习D-汉诺塔系列1
- ACM-递归递推练习N-青蛙过河
- ACM递推递归练习总结
- ACM-递推递归练习A-母牛的故事
- ACM(递归递推—J)
- ACM-递归递推练习F-计算组合数
- ACM-递归递推练习H-三国佚事——巴蜀之危
- ACM-递归递推练习O-螺旋方阵
- ACM 算法竞赛 八大基础算法 模拟法 字符串 递归分治 排序 枚举 贪心 递推
- ACM-递归递推练习G-Fighting_小银考呀考不过四级