数组中最小值的总和
Sum of minimum values from array
我编写了一个简单的C++程序来查找数组的最小总和值。我有arr[12] = {1, 2, 4, 8, 16,32, 64, 128, 256, 512, 1024, 2048}
.我想计算该数组中有多少个最小值来满足int p
.例如p = 10
,有2个索引的最小值满足整数p,即arr[1] = 2
和arr[3] = 8
。我用某种二进制转换方法解决了这个问题。我将这些二进制文件保存到新的数组arr2[]
中,并将所有这些二进制文件相加,以便在示例中得到答案 2。但是我遇到了一个问题,如果输入p = 1024
,由于某种原因,第二个 for 循环中的数组值没有保存第一个 for 循环int m
值。这仅适用于 1024,不适用于其他输入(或尚未找到(。有人可以解释为什么会发生这种情况吗?这是我的代码:
#include <stdio.h>
#include <conio.h>
int main()
{
int t, p, c=0;
int arr[12] = {1,2,4,8,16,32,64,128,256,512,1024,2048};
int arr2[c];
scanf("%d", &t);
while(t--)
{
int sum = 0, m = 0;
scanf("%d", &p);
for(int i = 11; i>=0; i--)
{
m = p/arr[i];
p = p - m*arr[i];
arr2[i] = m;
printf("%d ", m);
}
printf("n");
for(int i = 11; i>=0; i--)
{
sum+=arr2[i];
printf("%d ", arr2[i]);
}
printf("n SUM : %d n", sum);
}
getch();
}
我想我有一个简单的错误,但我找不到它。
将 c=0 的值更改为 c=12,因为我可以看到您的 arr2 数组将包含 12 个值,每次出现 arr 数组中的值。
相关文章:
- 使用递归的数组的最小值.这是怎么回事
- 在二维数组中查找最小值和最大值?
- 有没有办法使用递归函数找到数组中最小值的 INDEX?C++
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 需要使用模板查找数组的第二个最小和最小值
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 查找包含 N 个元素的数组的最小值和最大值
- 在不进行排序的情况下查找数组中n个最小值的索引
- 在索引0为0的数组中查找非零最小值C++
- 使用数组将最后一个最大值更改为第一个最小值
- 以 C/C++ 为单位的数组中最小值的地址
- 如何在给定数组的任何子数组(任何大小)中找到最大值(或最小值)?
- 有没有办法在递归中使用指针来查找数组的最小值?
- 构造大小为 N 的数组 A 和大小为 1 的数组 A,使得所有 A[i]*A[j] 的总和为最小值和正数。1 <= i < j <= N
- C++数组的最大值、最小值、平均值函数
- 数组中最小值的总和
- C 递归找到数组的最小值
- 从二维数组中查找最小值和最大值
- 使用函数从数组中索引最小值的问题
- 查找最小字典数组