0.0分
6 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
提供全方位、多语种的编程教程,助您从零基础到进阶开发。
编程教程 - 视频网课
编程教程 - 题解博客
编程教程 - 编程教辅指南
编程教程 - 编程问答
编程教程 - MySQL教程
编程教程 - JavaScript教程
编程教程 - Web网站搭建与管理
编程教程 - MCI多媒体编程
编程教程 - C语言图形编程
编程教程 - CSS教程
编程教程 - HTML教程
编程教程 - 算法竞赛教程
编程教程 - 趣味项目教程
编程教程 - ACM与蓝桥杯竞赛指南
编程教程 - Socket套接字编程
编程教程 - Linux命令
编程教程 - Java教程
编程教程 - C语言函数库
编程教程 - 编译器教程
编程教程 - Python教程
编程教程 - 单片机教程
编程教程 - 数据结构教程
编程教程 - C++教程
编程教程 - C语言教程
编程教程 - 计算机二级C语言
编程教程 - QT开发
编程教程 - 代码模板
编程教程 - STL库教程
编程教程 - MySQL函数库(超级全面)
编程教程 - PHP教程
编程教程 - Docker教程
编程教程 - 全部教程
提供海量题库,算法实践和真题,包括蓝桥杯历年真题、数据结构算法以及书籍配套习题等等,并已按照章节顺序编排,系统化提升您的编程能力。
编程训练 - 蓝桥杯真题
编程训练 - 编程零基础习题
编程训练 - 数据结构配套题
编程训练 - 信息学一本通 C/C++ 基础
编程训练 - 信息学一本通 基础算法
编程训练 - ACM 蓝桥杯竞赛入门
编程训练 - OpenJudge 题库
编程训练 - Java 程序设计配套习题
编程训练 - 信息学一本通 数据结构
编程训练 - Python 入门编程题库
编程训练 - 谭浩强 C 语言课后习题
编程训练 - Python程序设计配套习题
编程训练 - 信息学一本通提高篇
编程训练 - 凌云训练
编程训练 - 全部编程训练
编程训练 - 全部题目
提供包括C语言、C++、Java、Python等编程语言的试卷,还包括计算机二级、408考研等历年真题,模拟真实考试,检验学习成果。
编程考试 - C语言试卷
编程考试 - C++试卷
编程考试 - CSP考试
编程考试 - 数据结构与算法
编程考试 - 计算机二级
编程考试 - Java试卷
编程考试 - 考研真题
编程考试 - Linux
编程考试 - Mysql数据库
编程考试 - 计算机网络
编程考试 - NOIP真题
编程考试 - Python试卷
编程考试 - 高校题库
编程考试 - 人工智能
编程考试 - 软件工程
编程考试 - 全部试卷
老师可创建编程比赛、组建团队、进行自主或标准比赛,实现高效编程教学管理。
强大的AI编程辅助工具,支持代码解释、语言转换、查错与生成等功能。
0.0分
6 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
/*解题思路: 设数列首项为 x,后续每项的变化量为 d₁,d₂,...,dₙ₋₁(每个 d 只能是 +a 或 -b) 则数列总和可表示为:s = n*x + (d₁*(n-1) + d₂*(n-2) + ... + dₙ₋₁*1) 通过变形推导,可将问题转化为统计满足条件的变化量组合数,使用动态规划实现*/ #include <stdio.h> #include <stdlib.h> int main(void) { // 变量定义: // n:数列长度;s:数列总和;a:增量;b:减量;number:符合条件的数列总数 long long n = 0, s = 0, a = 0, b = 0, number = 0; // i,j:循环控制变量;x:用于判断首项是否为整数;max:最大可能的加权和步数 long long i = 0, j = 0, x = 0, max = 0; // 动态规划数组,list[k]表示"加权和步数为k"的变化量组合方案数 long long *list = NULL; // 读取输入数据:数列长度、目标总和、增量、减量 scanf("%lld %lld %lld %lld", &n, &s, &a, &b); // 计算最大加权和步数:1+2+...+(n-1) = n*(n-1)/2 // 这里的"步数"对应变化量被加权求和的系数总和 max = (n * (n - 1)) / 2; // 分配动态规划数组,大小为max+1(包含0到max的所有可能值) // calloc初始化会将所有元素置0,便于后续累加 list = (long long*)calloc((max + 1), sizeof(long long)); // 边界条件: // list[0] = 1 表示"0步"只有1种方案(不选任何增量) // list[1] = 1 表示"1步"只有1种方案(选择第一个位置的增量) list[0] = list[1] = 1;