砝码称重
来源:互联网 发布:cf手游刷钻软件免费版 编辑:程序博客网 时间:2024/05/17 07:11
/*
5个砝码
用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。
本题目要求编程实现:对用户给定的重量,给出砝码组合方案。
例如:
用户输入:
5
程序输出:
9-3-1
用户输入:
19
程序输出:
27-9+1
要求程序输出的组合总是大数在前小数在后。
可以假设用户的输入的数字符合范围1~121。
*/
#include<iostream.h>
void main()
{
int x;
cin>>x;
int y[5];
int e[]={0,1,-1};
int d[]={0,3,-3};
int c[]={0,9,-9};
int b[]={0,27,-27};
int a[]={0,81,-81};
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
for(int k=0;k<3;k++)
for(int m=0;m<3;m++)
for(int n=0;n<3;n++)
if(a[i]+b[j]+c[k]+d[m]+e[n]==x)
{
// cout<<a[i]<<b[j]<<c[k]<<d[m]<<e[n]<<endl;
y[0]=a[i];
y[1]=b[j];
y[2]=c[k];
y[3]=d[m];
y[4]=e[n];
}
for(i=0;i<5;i++)
{
if(y[i]!=0)
{
cout<<y[i];
for(int j=i+1;j<5;j++)
{
if(y[j]>0)
cout<<"+"<<y[j];
else if(y[j]<0) cout<<y[j];
}
break;
}
}
}
/*
#include<stdio.h>
void main()
{
int len=0,a[10]={0},j;
char op[10];
int t,k,m,input,i;
for(j=1;j<100;j++)
{
input=j;
m=j;
len=0;
t=1;
while(input)
{
k=input%3;
input/=3;
//关键是这里的两步
switch(k)
{
case 0:break;
case 1:
a[len]=t;
op[len++]='+';
break;
case 2:
a[len]=t;
op[len++]='-';
input++;
break;
}
t*=3;
}
printf("%d=%d",m,a[len-1]);
for(i=len-2;i>=0;i--)
printf("%c%d",op[i],a[i]);
printf("\n");
}
}
*/
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- Velocity 学习(页面静态化)
- JSON数据生成与解析
- windows操作系统下怎么设置开机启动程序
- 冒泡排序C语言实现
- 自定义过滤条件的实现方法(1)
- 砝码称重
- 不同线程之间传递数据
- OPENCV2中Mat和C++中一般的类对象赋值时的严重不同
- 创业编程七个错误认识
- ios中的SQL数据库文件加密 (使用sqlcipher)
- Exclusive-OR hdu3234
- MATLAB max函数
- 大公司,还是小公司?
- 中关村diy栏目的一种布局