带分数java RE
查看原帖
带分数java RE
1246722
Kalus楼主2024/2/28 12:26

请问这个怎么RE了,是超时了吗

package recursion;

import java.util.*;
import java.math.*;

public class Main {
	static int[] book = {1, 2, 3, 4, 5, 6, 7, 8, 9};
	static int count = 0;
	static int n = 0;
	
	public static int toNum(int l, int r) {
		int ans = 0;
		for(int i = l; i <= r; i++) {
			ans = book[i] + ans * 10;
		}
		return ans;
	}
	
	public static void swap(int i, int j , int []arr) {
		int temp = arr[i];
		arr[i] = arr[j];
		arr[j] = temp;
	}
	
	
	public static void permutation(int x, int[] arr){
		if(x==arr.length) {//输出找到的全排列
				
					for(int i = 0; i < 7 ; i++) {
						int num = toNum( 0, i );
						for (int j = i + 1; j < 8 ;j++) {
							
							if( num + toNum(i + 1, j) / toNum(j + 1, arr.length - 1 ) == n && toNum(i + 1, j) % toNum(j + 1, arr.length - 1) == 0)
								count++;
						}
					}
					
		}
		
		
		for(int i = x; i < arr.length;i++){//从x位置向后交换
			{int y = arr[x];arr[x] = arr[i];arr[i] = y;}//swap(arr[x],arr[i])
			permutation(x+1,arr);
			{int y = arr[x];arr[x] = arr[i];arr[i] = y;}//swap(arr[x],arr[i])
		}
		
		
	}
	
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		
		permutation(0, book);
		System.out.println(count);
		
		sc.close();
	}
}

2024/2/28 12:26
加载中...