04-05组合问题_算法训练

算法训练

匪警请拨110,即使手机欠费也可拨通!

为了保障社会秩序,保护人民群众生命財产安全,警察叔叔须要与罪犯斗智斗勇,因而须要常常性地进行体力训练和智力训练。

某批警察叔叔正在进行智力训练:

1 2 3 4 5 6 7 8 9 = 110;

请看上边的算式,为了使等式成立,须要在数字间填入加号或者减号(能够不填。但不能填入其他符号)。之间没有填入符号的数字组合成一个数。比如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是还有一个可能的答案。

求请你利用计算机的优势,帮助警察叔叔高速找到全部答案。

提每一个答案占一行。形如:

12+34+56+7-8+9

123+4+5+67-89

......

// 数字间填写符号 + -
// 1 2 3 4 5 6 7 8 9 = 100;

import java.util.*;

public class MyA
{
	public static void f(String cur, int goal, List<Integer> lst)
	{
		if(lst.size()==0) return;

		int a = lst.remove(lst.size()-1);
		if(lst.size()==0)
		{
			if(goal==a) System.out.println(a + cur);
			return;
		}

		List<Integer> lst2 = new Vector<Integer>();
		lst2.addAll(lst);
		List<Integer> lst3 = new Vector<Integer>();
		lst3.addAll(lst);

		f("+" + a + "" + cur, goal-a, lst2);
		f("-" + a + "" + cur, goal+a, lst3);

		int b = lst.remove(lst.size()-1);
		lst.add(Integer.parseInt(b+""+a));
		f(cur, goal, lst);
	} 

	public static void main(String[] args)
	{
		List<Integer> lst = new Vector<Integer>();
		for(int i=1; i<=9; i++) lst.add(i);

		f("", 110, lst);
	}
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-08-12 02:06:21

04-05组合问题_算法训练的相关文章

蓝桥杯_算法训练_字串统计

其实题目已经给的很清楚了,枚举所有的情况,统计出现次数,找到符合条件的结果. 那么我们就根据这个提示完成即可: 第一步:枚举所有可能的字串: 1 #include<iostream> 2 #include<string.h> 3 using namespace std; 4 int main() 5 { 6 int n; 7 char s[61]; //存放原来的字符串 8 char a[61][61]; //存放所有可能的字串 9 int i=0,j=0,r=0; 10 11 c

蓝桥杯_算法训练_关联矩阵

这个题目首先我们要知道关联矩阵是什么: 这个是网上找到的关联矩阵的定义,个人感觉还是比较清楚的. 好,那接下来就是根据所给的数据进行矩阵的输出. 题目中给的是有向图,定义中的是无向图.二者的区别大家应该可以想的到,有向图有起始坐标和终止坐标,二者顺序不可颠倒,这一点在题目中也有说明.其次就是,从起点指出去的箭头,矩阵中反映为1,被指向的点,在矩阵中反映为-1.理解了这个我们就好操作了: 1 #include<iostream> 2 using namespace std; 3 int main

ALGO-145_蓝桥杯_算法训练_4-1打印下述图形

记: 这里用到了printf("%*s%s%*s\n",n-i,"",arr,n-i,"");的写法, 其中%*s中的*代表该字符串s的个数,s为给字符串, 这写法一般用在打印中 AC代码: 1 #include <stdio.h> 2 #define MAX 50 3 4 int main(void) 5 { 6 int i,n; 7 char arr[MAX+1]; 8 scanf("%d",&n);

ALGO-139_蓝桥杯_算法训练_s01串(递归)

问题描述 s01串初始为"0" 按以下方式变换 0变1,1变01 输入格式 1个整数(0~19) 输出格式 n次变换后s01串 样例输入 3 样例输出 101 数据规模和约定 0~19 记: 题目给出的信息带有误导性,让人看不出规律(1应该是"1"才对) 具体的要求是通过看测试数据的结果得到的(lll¬ω¬) 即:n的字符串 = (n-1的字符串) + (n-2的字符串) AC代码: 1 #include <stdio.h> 2 #define MAX

DRL 教程 | 如何保持运动小车上的旗杆屹立不倒?TensorFlow利用A3C算法训练智能体玩CartPole游戏

本教程讲解如何使用深度强化学习训练一个可以在 CartPole 游戏中获胜的模型.研究人员使用 tf.keras.OpenAI 训练了一个使用「异步优势动作评价」(Asynchronous Advantage Actor Critic,A3C)算法的智能体,通过 A3C 的实现解决了 CartPole 游戏问题,过程中使用了贪婪执行.模型子类和自定义训练循环. 该过程围绕以下概念运行: 贪婪执行--贪婪执行是一个必要的.由运行定义的接口,此处的运算一旦从 Python 调用,就要立刻执行.这使得

蓝桥杯 算法训练 ALGO-36 传纸条

算法训练 传纸条 时间限制:1.0s   内存限制:512.0MB 问题描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是,他们可以通过传纸条来进行交流.纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n).从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递. 在

蓝桥杯 算法训练 ALGO-108 最大的体积

算法训练 最大体积 时间限制:1.0s   内存限制:256.0MB 问题描述 每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积.假如每个物品有无限件可用,那么有些体积是永远也装不出来的.为了尽量装满背包,附中的OIER想要研究一下物品不能装出的最大体积.题目保证有解,如果是有限解,保证不超过2,000,000,000 如果是无限解,则输出0 输入格式 第一行一个整数n(n<=10),表示物品的件数 第2行到N+1行: 每件物品的体积(1<= <=500) 输出格

蓝桥杯:算法训练之最大最小公倍数

算法训练 最大最小公倍数 时间限制:1.0s   内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式 输入一个正整数N. 输出格式 输出一个整数,表示你找到的最小公倍数. 样例输入 9 样例输出 504 数据规模与约定 1 <= N <= 106. 注:贪心,从最大的三个数开始考虑,如果最大的数为奇数,那么相邻的三个数中有两个奇数,最大公约数为1,最小公倍数就为n(n-1)(n-2). 如果为偶数,那么往后移,考虑n(n-

蓝桥杯——算法训练之乘积最大

问题描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加.活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大. 同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子: 有一个数字串:312, 当N=3,K=1时