试题 算法训练 数字游戏

资源限制
时间限制: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 蓝桥杯 数字游戏相关推荐

  1. java 蓝桥杯 石子游戏(题解)

    试题 算法训练 石子游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 石子游戏的规则如下: 地上有n堆石子,每次操作可选取两堆石子(石子个数分别为x和y)并将它们合并,操作的得分 ...

  2. 蓝桥杯数字三角形java,蓝桥杯数字三角形(java)

    题目要求: 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行 ...

  3. java蓝桥杯数字黑洞_【蓝桥杯】数字黑洞(5位黑洞数)

    任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456. 求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位, ...

  4. 标题 日期问题java蓝桥杯,日期类的使用(java)-蓝桥杯

    蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...

  5. JAVA 蓝桥杯 算法提高 阮小二买彩票

    JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...

  6. java蓝桥杯练习 拉马车

    java蓝桥杯练习 拉马车 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. ...

  7. java蓝桥杯加法变乘法_蓝桥杯-加法变乘法-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  8. java蓝桥杯练习 星际交流

    java蓝桥杯练习 星际交流 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了 ...

  9. java蓝桥杯练习 学做菜

    java蓝桥杯练习 学做菜 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 涛涛立志要做新好青年,他最近在学做菜.由于技术还很生疏,他只会用鸡蛋,西红柿,鸡丁,辣酱这四种原料来做菜, ...

最新文章

  1. WINCE6.0+S3C2443的启动过程---内核启动
  2. repmat--矩阵的复制和平铺
  3. CircleList
  4. python程序设计下载_Python程序设计
  5. 如何写windows系统已保护的内存区域
  6. 编写彩色空间转换程序:YUVtoRGB
  7. C/C++添加设置任务计划
  8. SQL经典面试题及答案
  9. python在web可以开发吗_Python Web开发
  10. mysql replication
  11. lamda获取参数集合去空_lambda表达式对集合的遍历
  12. python tkinter-单选、多选
  13. 实现一次加载多级所有的菜单
  14. DataGridView突出
  15. ASCII码中文对照表
  16. MAC 控制台常用命令
  17. 盘点7大影视类宝藏公众号,影迷/编导生必备,强烈推荐第3个【覃小龙课堂】
  18. 用canvas画太极图(一步步详解附带源代码)
  19. C语言将二维数组通过函数传递至一维数组
  20. STM32F103C8T6多通道adc采集(3通道)

热门文章

  1. 计算机数学基础试题,计算机数学基础(A)综合练习
  2. bigdicmal除法精度设置_java中BigDecimal进行加减乘除的基本用法
  3. 吉大计算机考研分数线2021,吉林大学2021考研分数线
  4. java spring 配置词典_java之spring mvc之拦截器
  5. flex file 文件上传 带参数 php,php+flex打造多文件带进度超级上传
  6. PostgreSQL 12系统表(11)pg_user
  7. 计算机图形学考试题及答案_中国大学 MOOC_计算机图形学_测试题及答案
  8. jconsole 里的线程编号一直在增加_第三章_运行时数据区概述及线程
  9. java 时间类型添加_java date类型 怎么 插入 时间 到 数据库
  10. 关于韩京清学者的《直线型倒立摆的自抗扰控制设计方案》仿真