c语言求一升序数组求不超过某数M的最大元素和
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/13 22:32:40
c语言求一升序数组求不超过某数M的最大元素和
比如{1,2,5,8},不超过M=7的最大和为2+5=7,该怎么实现?每个数最多用一次
比如{1,2,5,8},不超过M=7的最大和为2+5=7,该怎么实现?每个数最多用一次
![c语言求一升序数组求不超过某数M的最大元素和](/uploads/image/z/6896941-61-1.jpg?t=c%E8%AF%AD%E8%A8%80%E6%B1%82%E4%B8%80%E5%8D%87%E5%BA%8F%E6%95%B0%E7%BB%84%E6%B1%82%E4%B8%8D%E8%B6%85%E8%BF%87%E6%9F%90%E6%95%B0M%E7%9A%84%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0%E5%92%8C)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int max(int a, int b) {
\x05return a > b ? a : b;
}
int maxsum(int array[], int index, int num, int M) {
\x05if (M == 0) return 0;
\x05if (index == num) return 0;
\x05if (array[index] > M) return 0;
\x05if (array[index] == M) return M;
\x05return max(maxsum(array, index + 1, num, M), array[index] + maxsum(array, index + 1, num, M - array[index]));
}
int main() {
\x05int a[4] = { 1, 2, 5, 8 };
\x05int M = 7;
\x05printf("%d\n", maxsum(a, 0, 4, M));
}
比较暴力,没有剪枝
再问: - -!忘了说了,是double的数组。。。。大神麻烦改下了⊙﹏⊙‖
再答: #include <stdio.h>
#include <stdlib.h>
#include <math.h>
double max(double a, double b) {
\x09return a > b ? a : b;
}
double maxsum(double array[], int index, int num, double M) {
\x09if (M == 0) return 0;
\x09if (index == num) return 0;
\x09if (array[index] > M) return 0;
\x09if (array[index] == M) return M;
\x09return max(maxsum(array, index + 1, num, M), array[index] + maxsum(array, index + 1, num, M - array[index]));
}
int main() {
\x09double a[4] = { 1, 2, 5, 8 };
\x09double M = 7;
\x09printf("%d\n", maxsum(a, 0, 4, M));
}
#include <stdlib.h>
#include <math.h>
int max(int a, int b) {
\x05return a > b ? a : b;
}
int maxsum(int array[], int index, int num, int M) {
\x05if (M == 0) return 0;
\x05if (index == num) return 0;
\x05if (array[index] > M) return 0;
\x05if (array[index] == M) return M;
\x05return max(maxsum(array, index + 1, num, M), array[index] + maxsum(array, index + 1, num, M - array[index]));
}
int main() {
\x05int a[4] = { 1, 2, 5, 8 };
\x05int M = 7;
\x05printf("%d\n", maxsum(a, 0, 4, M));
}
比较暴力,没有剪枝
再问: - -!忘了说了,是double的数组。。。。大神麻烦改下了⊙﹏⊙‖
再答: #include <stdio.h>
#include <stdlib.h>
#include <math.h>
double max(double a, double b) {
\x09return a > b ? a : b;
}
double maxsum(double array[], int index, int num, double M) {
\x09if (M == 0) return 0;
\x09if (index == num) return 0;
\x09if (array[index] > M) return 0;
\x09if (array[index] == M) return M;
\x09return max(maxsum(array, index + 1, num, M), array[index] + maxsum(array, index + 1, num, M - array[index]));
}
int main() {
\x09double a[4] = { 1, 2, 5, 8 };
\x09double M = 7;
\x09printf("%d\n", maxsum(a, 0, 4, M));
}
c语言求一升序数组求不超过某数M的最大元素和
C语言,用子函数 二维数组求数组中的最大数出现错误的结果
从键盘获取任意10个整数存放于c语言,数组a中,将其最小的数和最大的数对换,并输出交换后的数组元素.求
c语言,从键盘获取任意10个整数存放于数组a中,将其最小的数和最大的数对换,并输出交换后的数组元素.求
c语言 首先完成一个包含10个整型元素的数组的升序排序,然后最大值和最小值互换
二维数组4*4,求主对角线元素之和,并选出最大的元素(C语言)
c语言:用数组求最大值、最小值、平均值、中下标为偶数的元素和
matlab 编写一个m函数文件,求一数组中的元素,使得该元素的绝对值在该数组所有元素的绝对值中是最大的.
C语言:有一个3*4的矩阵,要求编写求这个二维数组中的最大的那个元素的值,以及所在的行号和列号.
用C语言编写:求元素个数为 10 的一维数组元素中的最大值、最小值和平均值.
用C语言编写函数判断一个具有10个数组元素的证书数字是否升序排列?
c语言 从键盘输入6个整数到数组 求最大数及平均值和并输出