首页 > 编程语言 >算法笔记-装石头(利用二进制位数)

算法笔记-装石头(利用二进制位数)

时间:2025-01-23 15:54:03浏览次数:1  
标签:10 二进制位 笔记 石头 int 算法 袋子 1000

一、装石头(利用二进制位数)

题目描述:把1000个石头装在10个袋子里面,任取其中的一袋,或把几个袋中的石头数加起来。都可以凑成1~1000中任何一种石头数量,求这10个袋子分别装了多少个石头?

解法:考虑1000的二进制刚好十个位,所以按照二进制转十进制的原理,1~1000中任何一个数用10位的二进制来表示时,为1的那一位就把那个袋子里面所有石头加上,为0时就不加,因此10个袋子中石头数应该是:
20  21  2  2  2  2  2  2  28  2
注意这里最后一位本来应该是2,但是由于1+2+4+8+16+32+64+128+256+512=210-1=1023>1000;
所以最后一位应该是1000-(29-1)=489;
最后得到答案:每个袋子应该装1 2 4 8 16 32 64 128 256 489

给出具体代码来检验

#include <iostream>
#include<cmath>
using namespace std;
int n,number;
int a[20]= {0};
int Try(int x,int y)/*测试x行y列可否摆放棋子*/
{
    int j=1;
    while(j<x) /*与数组中已放好的数比较*/
    {
        if((a[j]==y)||(abs(x-j)==abs(a[j]-y)))
            return 0;
        j++;
    }
    return 1;
}
void place(int x)//递归,x代表放置第几个棋子
{
    if(x>n)
        number++;//print();/*已到末尾结束,打印结果*/
    else
    {
        for(int y=1; y<=n; y++) /*控制每一列的棋子进行尝试*/
        {
            if(Try(x,y))//如果可以摆放
            {
                a[x]=y;//在a中标记一下
                place(x+1);/*继续下一列的递归*/
            }
        }
    }
}
int main()
{
    cin>>n;
    place(1);
    cout<<number<<endl;
}

该文章为了记录大黑狗抄袭的每一次

标签:10,二进制位,笔记,石头,int,算法,袋子,1000
From: https://www.cnblogs.com/nmsx/p/18687912

相关文章

  • 辛普森积分学习笔记
    辛普森积分学习笔记定积分定积分的定义设函数\(f(x)\)在区间\([a,b]\)上有界,在\([a,b]\)中插入若干个分点\[a=x_0<x_1<x_2<\cdots<x_{n-1}<x_n=b\]把区间\([a,b]\)分成\(n\)个小区间,各小区间的长度依次为\(\Deltax_i=x_i-x_{i-1}(1\lei\len)\)。在各小区间上任......
  • Golang笔记——静态强类型、编译型、并发型语言
    大家好,这里是GoodNote,关注公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Go语言的基础知识,包括数据类型,深浅拷贝,编程范式,Go语言是一种静态(静态类型语言和静态语言)强类型、编译型、并发型,并具有垃圾回收功能的编程语言。文章目录1.Go语言基础知识数据类型......
  • 折腾笔记[11]-使用rust进行直接法视觉里程计估计
    摘要使用rust实现了一个完整的直接法视觉里程计系统,能够通过比较两幅图像中的像素强度来估计相机的运动。它通过单层和多层的优化策略,结合图像金字塔和并行计算,提高了位姿估计的精度和效率。最终,代码输出了优化后的相机位姿变换矩阵,并可视化了投影点的位置。Thisisacomplete......
  • 密钥派生算法KDF
    NOTE   密钥派生算法的关键点如下伪随机函数迭代次数初始密钥材料,如密码、盐等块关系,类似对称加密模式的ECB或者CBC等定义    密钥派生算法是从一个密钥产生一个或多个密钥的过程,产生的密钥可用于不同的安全需求,比如加解密、身份验证和完整性保护等。派生过程......
  • Python算法模糊匹配:FuzzyWuzzy深度剖析,从入门到精通,解决你所有需要匹配的需求
    在数据科学和文本处理的世界中,字符串匹配是一个非常普遍的问题。FuzzyWuzzy作为一个强大的Python库,通过模糊匹配技术解决了许多由于拼写错误、格式不一致引起的问题。本文将详细介绍FuzzyWuzzy,从基本概念到高级应用,帮助你掌握这一工具。目录FuzzyWuzzy简介安装与快速开始基础......
  • 浅谈根号算法
    前言本人在HL集训时爱上了根号算法,遂开此坑。所有根号算法都有一个共性:与暴力算法息息相关。但它们并不是拙劣的暴力,而是优美的暴力。所以根号算法也被称之为“暴力美学”。根号分治就是一个典型的根号算法。当题目性质与\(x\)和\(\frac{n}{x}\)都有关时,我们可以找到一个......
  • 联想 ThinkPad 笔记本T14 CPU 降频解决方案
    原因:在工作中,打开多个IDE的情况下,会出现卡顿问题,发现是由于CPU降频到0.5GHz导致的。环境:笔记本是联想ThinkPadT14CPU:12thGenInterlCorei7-1260P系统为Window10专业版解决办法经过搜索后,适合的方案如下:打开电源的卓越性能模式在WindowsPowershell中......
  • 读书笔记:高性能架构之道
    高性能架构之道,分布式、并发编程、数据库调优、缓存设计、IO模型、前端优化、高可用第1章高性能架构0011.1软件架构001理念层面:如研究软件的开发模型、评价指标、架构风格等。架构层面:研究如何协调和组织软件系统、子系统、模块之间的关系。类比于规划和设计建筑物的承......
  • 基于协同过滤算法的微信小程序文章推荐系统的设计与实现【高分毕设】
    目录资源链接论文链接后端系统链接微信端系统链接答辩PPT1.绪论1.1课题背景1.2研究目的和意义1.3文献回顾2.关键技术介绍2.1前端技术2.2协同过滤3.需求分析3.1可行性分析3.2功能需求分析3.2.1用户管理3.2.2文集管理3.2.3图书管理3.2.4文集和图书分类3.2.5......
  • 基于深度学习的高效非极大值抑制算法改进:从理论到实践
    非极大值抑制(Non-MaximumSuppression,NMS)是目标检测算法中的关键步骤,用于从多个重叠的候选框中筛选出最佳框。然而,传统的NMS算法在处理高密度目标场景或复杂背景时,可能会导致部分目标漏检或误检。本文探讨了基于深度学习的高效NMS算法改进,从理论分析到实际实现,为进一步优化目标......