您的位置:首页 > 其它

题目1140:八皇后

2014-02-08 20:58 260 查看
import java.io.IOException;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.Scanner;
import java.util.Vector;
import java.util.Arrays;

class Main
{
public static final boolean DEBUG = false;
public static Vector<String> v;
public static boolean[][] vis;
public static byte[] ans;

public static void dfs(int cur)
{
//System.out.println("cur=" + cur);
if (cur == 8) {
String s = new String(ans);
//System.out.println("s:" + s);
v.add(s);
return;
}

for (int i = 0; i < 8; i++) {
if (!vis[0][i] && !vis[1][i - cur + 7] && !vis[2][i + cur]) {
ans[cur] = (byte)(i + 1 + '0');
vis[0][i] = vis[1][i - cur + 7] = vis[2][i + cur] = true;
dfs(cur + 1);
vis[0][i] = vis[1][i - cur + 7] = vis[2][i + cur] = false;
}
}
}

public static void main(String[] args) throws IOException
{
Scanner cin;
int n, t;

if (DEBUG) {
cin = new Scanner(new FileReader("d:\\OJ\\uva_in.txt"));
} else {
cin = new Scanner(new InputStreamReader(System.in));
}

v = new Vector<String>();
vis = new boolean[3][15];
ans = new byte[8];

dfs(0);

t = cin.nextInt();
while (t-- > 0) {
n = cin.nextInt();
System.out.println(v.elementAt(n - 1));
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: