题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
在 2 行 5 列的格子中填入 1 到 10 的数字。 要求: 相邻的格子中的数,右边的大于左边的,下边的大于上边的。
如下图所示的 2 种,就是合格的填法。
请你计算一共有多少种可能的方案。
运行限制
public class Main {
static int ans=0;
static int[] a=new int[10];
static int[] biaoji=new int[11];
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){
biaoji[i]=1;
a[n]=i;
dfs(n+1);
a[n]=0;
biaoji[i]=0;
}
}
}
public static boolean check(int[] b){
if(a[1]<a[0]||a[2]<a[1]||a[3]<a[2]||a[4]<a[3]||a[6]<a[5]||a[7]<a[6]||a[8]<a[7]||a[9]<a[8]){
return false;
}
if(a[5]<a[0]||a[6]<a[1]||a[7]<a[2]||a[8]<a[3]||a[9]<a[4]){
return false;
}
return true;
}
}
-
- 最大运行时间:1s
- 最大运行内存: 128M