题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
将编号为 1 ~ 10 的 10 本书排放在书架上,要求编号相邻的书不能放在相邻的位置。
请计算一共有多少种不同的排列方案。
运行限制
public class Main {static int[] a=new int[10];static int[] biaoji=new int[11];static int ans=0;public static void main(String[] args) {dfs(0);System.out.println(ans);}public static void dfs(int n){if(n==10){if(check(a)){ans++;return;}else{return;}}for(int i=1;i<=10;i++){if(a[n]==0&&biaoji[i]==0){a[n]=i;biaoji[i]=1;dfs(n+1);a[n]=0;biaoji[i]=0;}}}public static boolean check(int[] b){for(int i=1;i<b.length-1;i++){if(a[i-1]==a[i]+1||a[i-1]==a[i]-1||a[i+1]==a[i]+1||a[i+1]==a[i]-1){return false;}}return true;}
}
-
- 最大运行时间:1s
- 最大运行内存: 128M