从9到1 ,9个数, 相邻的两个数可以连在一起, 只使用加 和 减号连接, 使这些函数加起来的总和等于100; 例如 98 + 7 - 6 + 5 - 4 + 3 - 2 - 1 = 100.
当然 可以由98 76 等等多过两位数, 本来是找几种, 要问的是看有多少种这样的组合? 大家怎么写代码啊?
krh2001(边城浪子)
#include <stdio.h>
int Compr(const char* exps , int first, int n)
{
int count = 0;
int i, part, m;
char buffer[128];
if(n == 0)
{
if(first == 100)
{
printf("%s = 100\n", exps);
return 1;
}
}
else
{
for(i = 1; i <= n; i++) // 取几位数
{
part = 0;
for(m = 0; m < i; m++)
part = part * 10 + (n - m);
sprintf(buffer, "%s + %d", exps, part);
count += Compr(buffer, first + part, n - i);
sprintf(buffer, "%s - %d", exps, part);
count += Compr(buffer, first - part, n - i);
}
}
return count;
}
int ComprFirst(int n)
{
int count = 0;
int i, part, m;
char buffer[128];
for(i = 1; i <= n; i++) // 取几位数
{
part = 0;
for(m = 0; m < i; m++)
part = part * 10 + (n - m);
sprintf(buffer, "%d", part);
count += Compr(buffer, part, n - i);
}
return count;
}
int main()
{
int count;
count = ComprFirst(9);
printf(" Total : %d\n", count);
return 0;
}
结果:
9 + 8 + 76 + 5 + 4 - 3 + 2 - 1 = 100
9 + 8 + 76 + 5 - 4 + 3 + 2 + 1 = 100
9 - 8 + 7 + 65 - 4 + 32 - 1 = 100
9 - 8 + 76 - 5 + 4 + 3 + 21 = 100
9 - 8 + 76 + 54 - 32 + 1 = 100
98 + 7 + 6 - 5 - 4 - 3 + 2 - 1 = 100
98 + 7 - 6 + 5 - 4 + 3 - 2 - 1 = 100
98 + 7 - 6 + 5 - 4 - 3 + 2 + 1 = 100
98 + 7 - 6 - 5 + 4 + 3 - 2 + 1 = 100
98 - 7 + 6 + 5 + 4 - 3 - 2 - 1 = 100
98 - 7 + 6 + 5 - 4 + 3 - 2 + 1 = 100
98 - 7 + 6 - 5 + 4 + 3 + 2 - 1 = 100
98 - 7 - 6 + 5 + 4 + 3 + 2 + 1 = 100
98 - 7 - 6 - 5 - 4 + 3 + 21 = 100
98 - 76 + 54 + 3 + 21 = 100
Total : 15
Press any key to continue
分享到:
相关推荐
在计算机操作系统中,作业调度是一个至关重要的环节,它决定了系统如何有效地分配计算资源,以最大化整体性能和用户满意度。本实验报告聚焦于短作业调度算法,这种策略通常倾向于优先处理执行时间较短的作业,以减少...
流水车间作业调度算法是工业工程领域中的一个重要研究课题,它涉及到如何有效地安排生产流程,以最小化加工时间、降低库存成本、提高生产效率。在这个压缩包中,包含了多种不同的算法,既有经典的启发式算法,也有...
模拟实现短作业调度算法,具体如下: 1、 设置作业体:作业名,作业的到达时间,服务时间,作业间的链接指针; 2、 进程初始化:由用户输入作业名、作业的到达时间和服务时间进行初始化; 3、 显示函数: 显示当前...
作业调度,也被称为高级调度或长程调度,是计算机操作系统中的一个重要组成部分。它主要负责决定哪些处于外存后备队列中的作业应该被调入内存并投入运行。作业调度算法的选择直接影响到系统的效率和用户体验。本文将...
银行家算法通过预定义的安全状态检查,确保在任何时刻都能找到一个安全的资源分配序列,以防止系统进入死锁状态。它模拟了银行贷款的过程,每个进程被视为借款者,资源被视为贷款,只有当系统可以确定不会出现资源...
在“作业分配问题”中,我们通常需要解决的是如何将n个作业合理地分配给n个人,使得每个人都有一个作业,且每个作业只被一个人领取,这是一个典型的组合优化问题。 在这个C#实现的项目中,回溯算法被用来解决这个...
"基于python的流水车间作业调度算法.zip"文件提供了一系列用于解决这个问题的工具和算法。在这个压缩包中,我们可以找到多种经典的调度算法以及智能算法的实现,它们都是以Python编程语言编写的,这使得它们具有很高...
设有一个单机系统、无其他资源限制并且每个作业运行时间相等 ,不妨设每个作业运行1个单位时间。现有n个作业,每个作业都有一个截止时间di>0。如果作业 能够在截止时间内完成,即可获得pi>0的收益。问题要求得到一种...
- SJF算法的实现中,使用了一个待处理队列来动态地选择执行时间最短的作业,并在每次作业完成后更新当前时间,继续选择最短作业进行调度。 - HRRN算法的实现中,定义了响应比的计算方式,并根据响应比来选择下一个...
首先,我们初始化一个二维数组dp,其中dp\[i]\[j]表示作业i在机器Pj上的加工时间。然后,我们使用以下公式来计算每个作业的加工时间: dp\[i]\[j] = min(dp\[i-1]\[j-1] + tij, dp\[i-1]\[j] + tik) 其中,tij是...
在计算机系统中,作业调度是操作系统中的一个关键环节,它决定了如何有效地管理多个并发任务,以确保系统的高效运行。在Java编程中,虽然标准库并未直接提供作业调度的API,但我们可以利用各种策略来实现类似的功能...
总结来说,这个Java项目是学习和实践资源管理和调度策略的一个好例子,它涵盖了操作系统中防止死锁的银行家算法和优化CPU利用率的作业调度算法。通过实际编写和运行代码,可以帮助开发者更直观地理解和掌握这些重要...
【算法分析与设计-实验四 作业调度问题】 实验报告主要关注了贪心算法在解决作业调度问题中的应用。贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或...
这种能力的培养从小学阶段便已经开始,五年级数学上册的学习内容便是一个很好的例证。本文将深入探讨五年级数学上册中的重要知识点,特别是那些在第十五周习题中被反复检验的数学概念。 在数学学习的初级阶段,加...
JSSP JSSP 是使用遗传算法实现的作业车间调度问题解决器。给定一组有限的作业,每个...每个操作都属于一个作业实例,而每个作业都有一个集成它的操作列表。 操作只能在其分配的机器上执行,但是可以并行运行多台机器。
《算法设计与分析》是中国科学技术大学开设的一门重要课程,主要涵盖了算法的设计策略、分析方法以及如何通过算法解决实际问题等内容。本作业答案集旨在帮助学生理解和掌握课程中的关键概念,提升解决复杂问题的能力...
柔性作业车间调度问题(Flexible Job Shop Scheduling Problem, FJSP)是其中的一个复杂子问题,涉及到多个工序和多台设备的优化配置。遗传算法(Genetic Algorithm, GA)是一种基于生物进化理论的全局优化方法,常...
本资源是针对操作系统课程设计的一个实践项目,重点实现了三种经典的作业调度算法:先来先服务(FCFS)、短作业优先(SJF)和响应比高者优先(HRRN)。 1. 先来先服务(FCFS)算法: FCFS是最简单的调度策略,按照...