用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。
本题目要求编程实现:对用户给定的重量,给出砝码组合方案。
例如:
5
9-3-1
19
27-9+1
要求程序输出的组合总是大数在前小数在后。
可以假设用户的输入的数字符合范围1~121。
用 -1、0、1 来表示五个砝码是否使用,是放在天平左端还是右端。直接暴力求解。
#include<stdio.h>
#include<string.h>
int main()
{int a,b,c,d,e;int num,x;while(scanf("%d",&x)!=EOF) {for(a=-1;a<=1;a++)for(b=-1;b<=1;b++)for(c=-1;c<=1;c++)for(d=-1;d<=1;d++)for(e=-1;e<=1;e++){if(x==81*a+27*b+9*c+3*d+1*e){if(a==1){printf("81");if(b==-1)printf("-27");if(b==1)printf("+27");if(c==-1)printf("-9");if(c==1)printf("+9");if(d==-1)printf("-3");if(d==1)printf("+3");if(e==-1)printf("-1");if(e==1)printf("+1");}if(a==0&&b==1){printf("27");if(c==-1)printf("-9");if(c==1)printf("+9");if(d==-1)printf("-3");if(d==1)printf("+3");if(e==-1)printf("-1");if(e==1)printf("+1");}if(a==0&&b==0&&c==1){printf("9");if(d==-1)printf("-3");if(d==1)printf("+3");if(e==-1)printf("-1");if(e==1)printf("+1");}if(a==0&&b==0&&c==0&&d==1){printf("3");if(e==-1)printf("-1");if(e==1)printf("+1");}if(a==0&&b==0&&c==0&&d==0&&e==1){printf("1");}printf("n");}}}return 0;}
本文发布于:2024-02-01 15:23:13,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170677219437562.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |