题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
将编号为 1 ~ 10 的 10 本书排放在书架上,要求编号相邻的书不能放在相邻的位置。
请计算一共有多少种不同的排列方案。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
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;
}
}
编程题目:计算10本书在书架上不相邻的排列方案,用DFS方法递归实现,涉及动态规划思想。
1183

被折叠的 条评论
为什么被折叠?



