java 蓝桥杯 数字游戏
试题 算法训练 数字游戏
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定一个1~N的排列a[i],每次将相邻两个数相加,得到新序列,再对新序列重复这样的操作,显然每次得到的序列都比上一次的序列长度少1,最终只剩一个数字。
例如:
3 1 2 4
4 3 6
7 9
16
现在如果知道N和最后得到的数字sum,请求出最初序列a[i],为1~N的一个排列。若有多种答案,则输出字典序最小的那一个。数据保证有解。
输入格式
第1行为两个正整数n,sum
输出格式
一个1~N的一个排列
样例输入
4 16
样例输出
3 1 2 4
数据规模和约定
0<n<=10
讲解:1~N的排列a[i];这个很重要,
1-3的全排列:1 2 3 ,1 3 2 ,2 1 3,2 3 1…
第一步:先设计好求出1-n的全排列
第二步:将每一个全排列计算,相等于题目的要求就输出结束。
import java.util.Scanner;public class 数字游戏 {static int n; //题目的nstatic int sum; //题目的sumstatic int b=0; //用来判断是否找到符合题目的要求的答案,如果找到就不用运行了public static void main(String[] args) {Scanner sc=new Scanner(System.in);n=sc.nextInt();sum=sc.nextInt();int[] arr=new int[n]; //定义数组来保存1-n的全排序int[] vis=new int[n+1]; //1-n的全排序求的过程用到dfs(0,arr,vis); //递归寻找答案}private static void dfs(int step, int[] arr, int[] vis) {if(b==0){ //如果没有找到答案继续寻找if(step==n){int[] arr1=new int[n]; //留着用来如果找到符合的序列,用于输出 for(int i=0;i<n;i++){arr1[i]=arr[i];}for(int i=0;i<n-1;i++) //按题目的要求计算这个1-n的排序是否符合题目的sum{for(int j=0;j<n-1;j++){arr1[j]=arr1[j]+arr1[j+1];}}if(arr1[0]==sum) //如果符合就结束了{for(int i=0;i<n;i++){System.out.print(arr[i]+" ");} b=1;}return;} for(int i=1;i<=n;i++) //这个循环就是用来找1-n的全排序,也可以自己写一个{if(vis[i]==0){arr[step]=i;vis[i]=1; //代表这个数列里面i值已经存在,不能再次出现,这是全排列和不能重复的全排列dfs(step+1, arr, vis);vis[i]=0; //回溯,上面的i已经取了,因为循环原因,下一次vis是没有取的}}}}}
java 蓝桥杯 数字游戏相关推荐
- java 蓝桥杯 石子游戏(题解)
试题 算法训练 石子游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 石子游戏的规则如下: 地上有n堆石子,每次操作可选取两堆石子(石子个数分别为x和y)并将它们合并,操作的得分 ...
- 蓝桥杯数字三角形java,蓝桥杯数字三角形(java)
题目要求: 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行 ...
- java蓝桥杯数字黑洞_【蓝桥杯】数字黑洞(5位黑洞数)
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456. 求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位, ...
- 标题 日期问题java蓝桥杯,日期类的使用(java)-蓝桥杯
蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...
- JAVA 蓝桥杯 算法提高 阮小二买彩票
JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...
- java蓝桥杯练习 拉马车
java蓝桥杯练习 拉马车 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. ...
- java蓝桥杯加法变乘法_蓝桥杯-加法变乘法-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- java蓝桥杯练习 星际交流
java蓝桥杯练习 星际交流 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了 ...
- java蓝桥杯练习 学做菜
java蓝桥杯练习 学做菜 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 涛涛立志要做新好青年,他最近在学做菜.由于技术还很生疏,他只会用鸡蛋,西红柿,鸡丁,辣酱这四种原料来做菜, ...
最新文章
- WINCE6.0+S3C2443的启动过程---内核启动
- repmat--矩阵的复制和平铺
- CircleList
- python程序设计下载_Python程序设计
- 如何写windows系统已保护的内存区域
- 编写彩色空间转换程序:YUVtoRGB
- C/C++添加设置任务计划
- SQL经典面试题及答案
- python在web可以开发吗_Python Web开发
- mysql replication
- lamda获取参数集合去空_lambda表达式对集合的遍历
- python tkinter-单选、多选
- 实现一次加载多级所有的菜单
- DataGridView突出
- ASCII码中文对照表
- MAC 控制台常用命令
- 盘点7大影视类宝藏公众号,影迷/编导生必备,强烈推荐第3个【覃小龙课堂】
- 用canvas画太极图(一步步详解附带源代码)
- C语言将二维数组通过函数传递至一维数组
- STM32F103C8T6多通道adc采集(3通道)
热门文章
- 计算机数学基础试题,计算机数学基础(A)综合练习
- bigdicmal除法精度设置_java中BigDecimal进行加减乘除的基本用法
- 吉大计算机考研分数线2021,吉林大学2021考研分数线
- java spring 配置词典_java之spring mvc之拦截器
- flex file 文件上传 带参数 php,php+flex打造多文件带进度超级上传
- PostgreSQL 12系统表(11)pg_user
- 计算机图形学考试题及答案_中国大学 MOOC_计算机图形学_测试题及答案
- jconsole 里的线程编号一直在增加_第三章_运行时数据区概述及线程
- java 时间类型添加_java date类型 怎么 插入 时间 到 数据库
- 关于韩京清学者的《直线型倒立摆的自抗扰控制设计方案》仿真