您的位置:首页 > 其它

砝码称重

2017-02-14 17:01 211 查看
5个砝码

用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。

如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。

本题目要求编程实现:对用户给定的重量,给出砝码组合方案。

例如:

用户输入:

5

程序输出:

9-3-1

用户输入:

19

程序输出:

27-9+1

要求程序输出的组合总是大数在前小数在后。

可以假设用户的输入的数字符合范围1~121。

#include<stdio.h>

int main()
{
int a[3]={0,-1,1};
int b[3]={0,-3,3};
int c[3]={0,-9,9};
int d[3]={0,-27,27};
int e[3]={0,-81,81};
int i,j,k,l,m;
int n;
int ans[5];
int flag;
scanf("%d",&n);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<3;k++)
for(l=0;l<3;l++)
for(m=0;m<3;m++)
{
if(a[i]+b[j]+c[k]+d[l]+e[m]==n)
{
ans[0]=e[m];
ans[1]=d[l];
ans[2]=c[k];
ans[3]=b[j];
ans[4]=a[i];
}
}
for(i=0;i<5;i++)
{
if(ans[i]!=0)
{
flag=i;
break;
}
}
for(i=flag;i<5;i++)
{
if(i==flag)
printf("%d",ans[i]);
else if(ans[i]==0)
continue;
else if(ans[i]>0)
printf("+%d",ans[i]);
else if(ans[i]<0)
printf("%d",ans[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: