文档介绍:算法设计与分析代码(java)
N后问题
import ;
import ;
import ;
public class NQueen {
/**
* ***@param args
*/
static int n;
static int[] x;
static long sum;
public static long nQueen(int nn) {
n = nn;
sum = 0;
x = new int[n + 1];
for (int i = 0; i <= n; i++)
x[i] = 0;
backtrack(1);
return sum;
}
private static boolean place(int k) {
for (int j = 1; j < k; j++) {
if (((k - j) == (x[j] - x[k])) || (x[j] == x[k]))
return false;
}
return true;
}
private static void backtrack(int t) {
if (t > n)
{
sum++;
("第"+sum+"种有效方案:");
for(int i=1;i<=n;i++)
{
("--第"+i+"行上皇后在第"+x[i]+"列");
}
("");
}
else
for (int i = 1; i <= n; i++) {
x[t] = i;
if (place(t))
backtrack(t + 1);
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
("请输入皇后的个数");
BufferedReader strinH=new BufferedReader(new InputStreamReader());
int num=(());
nQueen(num);
("一共"+sum+"个有效方案");
}
}
0—1背包问题
public class packge {
public static void knapsack(int []v,int []w,int c,int [][]m)
{
int n=-1;
int jMax=(w[n]-1,c);
for(int j=0;j<=jMax;j++)
m[n][j]=0;
for(int j=w[n];j<=c;j++)
m[n][