小编NL6*_*628的帖子

动态编程:计算两者之间的数字

给出两个数字,X并且Y它们之间存在多少个数字,其中至少有一半的数字相同?例如,1122并且4444将工作,而11234112233不会工作.

显然,最直接的方法是从X1 开始并逐渐递增Y,然后检查每个数字,但这太慢了,因为XY之间的边界10010^18.我知道它是某种形式的动态编程,我应该使用字符串来表示数字,但我无法进一步了解.

任何帮助都会被接受.谢谢!

c++ string algorithm optimization dynamic-programming

3
推荐指数
1
解决办法
447
查看次数

立即获取整数中最左边有效位的索引

如何从左到右而不是从右到左扫描整数(二进制)?我知道我可以从左边开始尝试每一位,然后记录最左边的位,但是有没有更快的方法?是否有一个内置函数可以立即找到整数中最左边的有效位(即 1)?

我知道从右到左,我可以做类似的事情

int myInt = 1234;
for(int i = 0; i < 32; i++) {
  int curr_bit = myInt & (1 << i);
  // do something with curr_bit
}
Run Code Online (Sandbox Code Playgroud)

但是,我想从最左边的可用位开始,并且我想要它的数字“x”,以便它1 << x指向该确切的数字(正如旁注,我正在尝试实现重复平方,并且我需要在我的代码)。

任何帮助将不胜感激!

c++ bit-manipulation built-in bit findfirst

0
推荐指数
1
解决办法
2435
查看次数