使用 C++ 中的给定操作将数组缩减为单个元素
给定一个整数变量 Number 作为输入。让我们考虑一个按排序顺序包含 1 到 Number 范围内的元素的数组。如果我们对一个数组执行一个操作,使得在每一步都删除奇数位置的元素。然后目标是执行此操作 N 次,直到只剩下一个元素。最后打印该元素。
注意-:元素的定位使得索引 0 处的数组位于第一个位置,依此类推。
数组中元素数的测试用例
输入数=1,输出=1
输入数=2,输出=2
输入数=3,输出=2
输入数=4,输出=4
输入数=5,输出=4
输入数=6,输出=4
输入数=7,输出=4
......
输入数=12,输出数=8
输入数=20,输出=16
根据上述观察,对于 2 i 到 2 i+1 -1之间的数字范围,输出将为 2 i。
例子
输入 -Number=7
输出 - 减少操作后的单个元素是:4
说明 - 第一个元素位于位置 1,依此类推。
该数组将是 [ 1 2 3 4 5 6 7 ]
第一次操作后:[ 2 4 6 ]
第二次手术后: [ 4 ]
输入 - 数字=18
输出 - 减少操作后的单个元素是:4
说明- 第一个元素位于位置 1,依此类推。
该数组将是 [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ]
第一次操作后:[ 2 4 6 8 10 12 14 16 18]
第二次手术后:[ 2 8 12 16 ]
第三次手术后:[ 8 16 ]
第四次手术后 [ 16 ]
下面程序中使用的方法如下
在这种方法中,我们将使用 while 循环根据上述公式计算最终结果。取初始值为 2 并遍历直到 2*result <= input number 并在每次迭代时将值加倍。
取输入变量 Number
函数getsingleElement(long num)获取输入数字并根据上述公式打印结果。
取一个可变的结果。
用 2 初始化结果。
使用 while 循环遍历直到 result*2<=num。
双重结果里面会。
while 循环一结束,我们就会得到想要的值。
返回结果。
在 main 中打印结果。
示例
#include<bits/stdc++.h>输出结果using namespace std;
long getsingleElement(long num){
long result;
result=2;
while(result*2 <= num){
result=result*2;
}
return result;
}
int main(){
int Number = 20;
cout<<"归约运算后的单个元素为: "<<getsingleElement(Number) ;
return 0;
}
如果我们运行上面的代码,它将生成以下输出
归约运算后的单个元素为: 16
以上是 使用 C++ 中的给定操作将数组缩减为单个元素 的全部内容, 来源链接: utcz.com/z/317234.html