题目:输入一个数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为止此时结果最大,考虑到本质时做题才好做,更省力。