• 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

    package 第九次模拟;
    
    import java.util.Scanner;
    
    public class 数字游戏 {
    	static int sum;
    	static int N;
    	static int arr1[];
    	static boolean bool = true;
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner input = new Scanner(System.in);
    		N = input.nextInt();
    		sum = input.nextInt();
    		int array[] = new int[N];
    		int visit[] = new int[N + 1];
    
    		dfs(0, array, visit, bool);
    	}
    
    	public static void dfs(int step, int arr[], int vis[], Boolean b) {
    		if (step == N) {
    			int arr1[] = new int[N];
    			for (int i = 0; i < N; i++) {
    				arr1[i] = arr[i];
    			}
    			for (int i = 1; i < N; i++) {
    				for (int j = 0; j < N - i; j++) {
    					arr1[j] = arr1[j] + arr1[j + 1];
    				}
    			}
    			if (arr1[0] == sum) {
    				for (int x : arr) {
    					System.out.print(x + " ");
    				}
    				bool = false;
    				return;
    
    			} else
    				return;
    		}
    		if (bool == true) {
    			for (int i = 1; i <= N; i++) {
    				if (vis[i] == 0) {
    					arr[step] = i;
    					vis[i] = 1;
    					dfs(step + 1, arr, vis, bool);
    					vis[i] = 0;
    				}
    
    			}
    		}
    		return;
    	}
    }
    
    
  • 相关阅读:
    Linux之find命令
    Android WebView如何加载assets下的html文件
    Android 静默安装
    Android listview下拉刷新 SwipeRefreshLayout
    AndroidManifest.xml 详解
    Android 查看内存使用状况
    Android invalidate() 和 postInvalidate()的区别
    Android动画之Interpolator和AnimationSet
    实现Fragment的切换和ViewPager自动循环设置切换时间
    android 实现橡皮擦效果以及保存涂鸦的功能
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946636.html
Copyright © 2020-2023  润新知