东华oj-挑战题第43题-最少操作数

43 最少操作数

作者: Turbo时间限制: 1S章节: 基本练习(数组)

问题描述 :

数组A中共有n个元素,初始全为0。你可以对数组进行两种操作:1、将数组中的一个元素加1;2、将数组中所有元素乘2。求将数组A从初始状态变为目标状态B所需要的最少操作数。

输入说明 :

第一行一个正整数n表示数组中元素的个数
  第二行n个正整数表示目标状态B中的元素

n<=50,B[i]<=1000

输出说明 :

输出一行表示最少操作数

输入范例 :

2
7 8

输出范例 :

7

害,我太菜了,刚开始看到这道题一点思路都没有……
参考了一位大佬的才明白过来

解题思路及代码:

/*
	T43 最少操作数 
	算法概述:逆向思维,题目中说要从a变换得到b,那也可以看成是从b变换得到a
	对每个步骤的每个数,若它是奇数,那么它肯定是由上一个数加1得到的;若它是
	偶数,由于要以最快的速度降到0,那么它肯定是由上一个数乘2得到的。这样就
	可以一步步的变成0,统计下操作次数就可以了 
*/ 

#include<stdio.h>
#define MAX_SIZE 55 

int main() 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值