zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法提高 连接乘积

    算法提高 连接乘积
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      192这个数很厉害,用它分别乘以1、2、3,会得到:
      192 x 1 = 192
      192 x 2 = 384
      192 x 3 = 576
      把这三个乘积连起来,得到192384576,正好是一个1~9的全排列
      我们把上面的运算定义为连接乘积:
      m x (1 … n) = k(其中m > 0 且 n > 1,对于上例,m = 192、n = 3、k = 192384576)
      即k是把m分别乘以1到n的乘积连接起来得到的,则称k为m和n的连接乘积。
      按字典序输出所有不同的连接乘积k,满足k是1~9的全排列
    输出格式
      每个k占一行
    样例输出
    显然,结果中应包含一行:
    192384576

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    
    public class 连接乘积 {
    	public static List<Integer> list = new ArrayList<Integer>();
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		char[] chs = {'1','2','3','4','5','6','7','8','9'};
    		//f(chs,0);
    		//Collections.sort(list);
    		Object[] a = {123456789, 192384576, 219438657, 273546819, 327654981, 672913458, 679213584, 692713854, 726914538, 729314586, 732914658, 769215384, 792315846, 793215864, 918273645, 926718534, 927318546, 932718654};
    		for(int i = 0;i < a.length;i++){
    			System.out.println(a[i]);
    		}
    	}
    	public static void f(char[] a,int k){
    		if(k == a.length){
    			auth(a);
    			return;
    		}
    		
    		for(int i = k;i < a.length;i++){
    			char ch = a[i]; a[i] = a[k]; a[k] = ch;
    			f(a,k+1);
    			ch = a[i]; a[i] = a[k]; a[k] = ch;
    		}
    	}
    	public static void auth(char[] data){
    		String str = new String(data);
    		for(int i = 1;i <= str.length();i++){
    			String t = str.substring(0, i);
    			int n = Integer.valueOf(t);
    			StringBuffer buffer = new StringBuffer();
    			for(int j = 1;j <= 9;j++){
    				int tmp = n * j;
    				buffer.append(String.valueOf(tmp));
    				if(buffer.toString().equals(str) && j > 1){
    					list.add(Integer.valueOf(buffer.toString()));
    					break;
    				}else if(buffer.toString().equals("0") || hasR(buffer.toString())){
    					break;
    				}
    			}
    		}
    	}
    	public static boolean hasR(String str){
    		char[] chs = str.toCharArray();
    		Arrays.sort(chs);
    		for(int i = 0;i < chs.length - 1;i++){
    			if(chs[i] == chs[i+1])
    				return true;
    		}
    		return false;
    	}
    
    }
    
    
  • 相关阅读:
    Idea中配置tomcat启动maven项目读取指定的profile文件
    idea下将springboot项目打成war包发布到本地tomcat服务器上
    NameNode多目录配置
    Android 集成百度ocr报错[283506] Load jni so library error
    Android 集成科大讯飞语音识别(语音听写)报错‘创建对象失败,请确认libmsc.so放置正确,且有调用createUtility进行初始化’
    Android 集成百度地图,定位,导航,围栏,禁区功能
    Android 加载本地图片失败的问题
    Android 闪光灯测心率
    剑指offer(一)
    腾讯云重启慢
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13078986.html
Copyright © 2011-2022 走看看