换抵挡装置(按位运算符的运用)

2023-11-30 22:12

本文主要是介绍换抵挡装置(按位运算符的运用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

给出两个长度分别为n1,n2(n1 + n2 <=32)且每列高度只为1或2的长条(保证高度为1的地方水平上一致)。需要将它们放入一个高度为3的容器长度,问能够容纳它们的最短容器长度

用手画的

本来是n1,n2 <= 100的,但是我想用一下按位运算符,就稍微改了一下题目

也可以数组模拟,这样可以满足原本的条件

输入格式:

第一行为两个整数,代表n1,n2

第二行有n1个数,为1或者2,代表列高

第三行有n2个数,为1或者2,代表列高

输出格式:

一个整数,代表最短容器长度

(注意:输入时长条的最下层是填满的,即如果要组装,需要将其中一个长条反转。且长条可以左右翻转(那前一句就没影响了,反正都要试一下))

代码如下:

#include<stdio.h>
int input(int length);
int roll(int l, int length);
int getmin(int l1, int l2, int n1, int n2);int main(void)
{int n1, n2, min = 0, tmp;scanf("%d%d", &n1, &n2);int l1 = input(n1), l2 = input(n2);//listmin = getmin(l1, l2, n1, n2);l1 = roll(l1, n1);tmp = getmin(l1, l2, n1, n2);min = (tmp < min) ? tmp : min;l2 = roll(l2, n2);tmp = getmin(l1, l2, n1, n2);min = (tmp < min) ? tmp : min;l1 = roll(l1, n1);tmp = getmin(l1, l2, n1, n2);min = (tmp < min) ? tmp : min;printf("%d", min);return 0;
}
int input(int length)
{int tmp = 0;for(int i = 0, j; i < length; i++){scanf("%d", &j);tmp |= --j;tmp <<= 1;}return tmp >> 1;
}
int roll(int l, int length)
{int i = 1, j = 1;for(int x = 1; x < length; x++)j <<= 1;for(; i < j; i <<= 1, j >>= 1){int a = i & l, b = j & l;if(a)  l |= j;else if(b)  l -= b;if(b)  l |= i;else if(a)  l -= i;}return l;
}//将l上的二进制数翻转
int getmin(int l1, int l2, int n1, int n2)
{for(int i = 0; i < n2; i++, l1 <<= 1)if((l1 & l2) == 0)return (n1 + i > n2) ? n1 + i : n2;return n1 + n2;
}

roll函数是用来翻转“数组”的

getmin函数是用来得到这两个长条摆放情况的时候的最小容器长度的

input函数就是输入,没得说

这篇关于换抵挡装置(按位运算符的运用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/438745

相关文章

Swagger在java中的运用及常见问题解决

《Swagger在java中的运用及常见问题解决》Swagger插件是一款深受Java开发者喜爱的工具,它在前后端分离的开发模式下发挥着重要作用,:本文主要介绍Swagger在java中的运用及常... 目录前言1. Swagger 的主要功能1.1 交互式 API 文档1.2 客户端 SDK 生成1.3

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高,电能质量在线监测装置在电力系统中得到广泛应用。目前,市场上的在线监测装置主要分为A类和B类两种类型,A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应根据实际需求和应用场景综合考虑,并定期维护和校准。电能质量在线监测装置是用于实时监测电力系统中的电能质量参数的设备。 APView400电能质量A类在线监测装置以其多核

poj 2431 poj 3253 优先队列的运用

poj 2431: 题意: 一条路起点为0, 终点为l。 卡车初始时在0点,并且有p升油,假设油箱无限大。 给n个加油站,每个加油站距离终点 l 距离为 x[i],可以加的油量为fuel[i]。 问最少加几次油可以到达终点,若不能到达,输出-1。 解析: 《挑战程序设计竞赛》: “在卡车开往终点的途中,只有在加油站才可以加油。但是,如果认为“在到达加油站i时,就获得了一

【重学 MySQL】十九、位运算符的使用

【重学 MySQL】十九、位运算符的使用 示例检查权限添加权限移除权限 在 MySQL 中,位运算符允许你直接在整数类型的列或表达式上进行位级操作。这些操作对于处理那些需要在二进制表示上进行直接修改或比较的场景特别有用,比如权限管理、状态标记等。 &(位与) 对两个数的二进制表示进行位与操作。只有两个相应的二进制位都为 1 时,结果的该位才为 1,否则为 0。 |(位

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变