2013-java-A-省赛-2-振兴中华
我的代码
public class Main {
static int ans;
static int[][] a= {
{1,2,3,4,5},
{2,3,4,5,6},
{3,4,5,6,7},
{4,5,6,7,8}
};
public static void main(String[] args) {
ans=0;
dfs(0,0,"");
System.out.println(ans);
}
/**
* @param i
* @param j
*/
private static void dfs(int i, int j, String s) {
s+=(""+a[i][j]);
if(s.equals("12345678")) {
ans++;
return;
}
if(j<4) {
dfs(i, j+1, s);
}
if(i<3) {
dfs(i+1, j, s);
}
}
}
答案
这就是差距嘛!哈哈哈哈
因为题目上,汉字排列的特殊性,只要从(0,0)走到(3,4)就行,就肯定是那个字符串,不用判断
public class Main {
public static void main(String[] args) {
System.out.println(dfs(0,0));
}
/**
* @param i
* @param j
*/
private static int dfs(int i, int j) {
if(i==3 || j==4)return 1;
return dfs(i+1, j)+dfs(i, j+1);
}
}