文章目录

  • 1. 题目
    • 1.1 题目链接
    • 1.2 题目大意
    • 1.3 解题思路
  • 2. Accepted 代码

1. 题目

1.1 题目链接

http://poj.org/problem?id=2453

1.2 题目大意

一个数x的二进制表示有n个1,求一个有相同个数1的二进制数(比x大,且要最小的)

1.3 解题思路

  • 求出该数的二进制表示
  • 从低位往高位找到第一个为1的位 i ,检查其下一位 i+1
  • i+1 位值为 0,直接交换01,结束查找
  • i+1 位值为1,将 i 位的1不断地与前面的交换,换至最低位
  • 重复以上过程

2. Accepted 代码

/*** @description: 贪心应用poj2453* @author: michael ming* @date: 2019/7/2 20:46* @modified by:*/
#include <cstring>
#include <iostream>
using namespace std;int calc(int num, int *binarynum)
{int i = 0, j, k, value = 0;while(num != 0){binarynum[i++] = num % 2;//数组存储的是该数的二进制的反序序列num = num/2;}k = i;//k记录最后一个有效位的下一位for(i = 0; i < k; ++i){if(binarynum[i] == 0)continue;//找到为1的iif(binarynum[i+1] == 0)//如果i的下一个为0{swap(binarynum[i],binarynum[i+1]);//交换完成寻找break;}for(j = i; j >= 1; --j)//否则将i处的1换到最开始{swap(binarynum[j],binarynum[j-1]);}}for(i = k; i >= 0; --i)//计算对应的10进制数值//最后一位k-1可能进位到k,所以i从k开始value = value*2 + binarynum[i];return value;
}
int main()
{int binarynum[30];//数据大小不会超过30位2进制int num;while(cin >> num && num){memset(binarynum,0,30*sizeof(int));cout << calc(num,binarynum) << endl;}return 0;
}

POJ 2453 贪心应用相关推荐

  1. POJ 3040 贪心

    贪心好题 ---. 思路: 从大到小凑C 如果不够 再从小到大补满(超过)C //By SiriusRen #include <cstdio> #include <cstring&g ...

  2. poj 1716(贪心)

    题意:给出数轴上的n个区间,每个区间都是连续的int区间.现在要在数轴上任意取一堆元素,构成一个元素集合V,要求每个区间和元素集合V的交集至少有两个不同的元素求集合V最小的元素个数. 解题思路: 考虑 ...

  3. POJ - 1456 贪心 堆常用操作 注意细节

    题意:给定n个商品的deadline和profit,求每天卖一件的情况下的最大获利 显然是一道贪心 按deadline从小到大排序好,动态维护小根(profit)堆的大小<=当前deadline ...

  4. POJ 2718 贪心

    做了一上午的2718,差点爆炸 做法一: 用到了STL中的next_permutation产生所有的全排列 要使生成的两个数差最小,两个数的位数差肯定小于等于1,产生一个排列之后在中间分开就可以 什么 ...

  5. 田忌赛马 poj 2287 (贪心,动态规划,贪心+动态规划)

    题目链接 贪心 :1:如果田忌的最快马快于齐王的最快马,比一场 2: 如果田忌的最快马慢于齐王的最快马,则用田忌的最慢马和齐王的最快马比赛一场 3: 如果田忌的最快马和齐王的最快马一样快,则比较田忌的 ...

  6. POJ 1989 贪心

    题意: 思路: 从前到后扫一遍 如果k个数都出现过了 ans++ 从当前接着判断 最后答案就是ans+1 //By SiriusRen #include <cstdio> using na ...

  7. POJ 2323 贪心

    题意: 思路: 贪 贪 贪 如果当前的c>之前的c+s 那么之前的合适 一直贪下去就好了 //By SiriusRen #include <cstdio> #include < ...

  8. 《数据结构与算法之美》学习汇总

    此篇文章是对自己学习这门课程的一个总结和课后的一些练习,做一个汇总,希望对大家有帮助.本人是半路程序员,2018年2月开始学习C++的,下面的代码基本都是C++11版本的,代码有错误的地方请不吝留言赐 ...

  9. 0x08.基本算法 — 总结与练习

    目录 知识点归纳 1.AcWing116. 飞行员兄弟 (POJ 2965) (dfs/位运算状态压缩) 1.DFS 2.位运算+二进制枚举 2.AcWing.117. 占卜DIY (模拟) 3.Ac ...

最新文章

  1. xpage 传参_Vuex入门、同步异步 存取值
  2. httpclient妙用一 httpclient作为客户端调用soap webservice(转)
  3. 【剑指offer】面试题33:二叉搜索树的后序遍历序列
  4. 数据结构算法模拟系统
  5. Spring Cloud 5分钟搭建教程
  6. Software--Data Visual 数据可视化
  7. PHP获取grpc请求时间,Go gRPC进阶-超时设置(六)
  8. python open函数encoding_python中open函数的使用
  9. 深信服云终端aDesk_STD-200H、朵拉云云终端DC10 对比测试
  10. HTML5期末大作业:北京旅游网页设计制作(1页) 简单静态HTML网页作品 我的旅游网页作业成品 学生旅游网站模板
  11. 快递市场定价 到底有何影响
  12. [句子成分] 四、状语 定语 同位语
  13. 开发微信小程序的作用
  14. 大数据技术原理与应用(第十章 Spark)
  15. 南卡和索尼蓝牙耳机哪个更好?性价比高的蓝牙耳机推荐
  16. javaMap集合 详解
  17. sqlserver:文件和打印共享资源(*.*.*.210)处于联机状态,但未对连接尝试做出响应。
  18. 基于matlab的水塔水位控制设计,水箱液位控制系统设计
  19. python生成随机数和随机矩阵
  20. 基于S7–1500的单部六层电梯教程(三)

热门文章

  1. navicat远程mysql_navicat 远程连接mysql
  2. 产品经理应该mysql_数据库对产品经理的重要性
  3. java中有scoreframe类型嘛_java构造函数的三种类型总结
  4. Ogg入门--基本命令
  5. Spring总结四:IOC和DI 注解方式
  6. hdu 1505 City Game
  7. Google搜索图片时只显示第一页
  8. 用MS SQL Server事件探查器来跟踪数据库的操作
  9. waveOutGetDevCaps - 查询输出设备的性能
  10. C++类中protected访问权限问题