演算法小玩意

2022-07-20 00:36:23 字數 2868 閱讀 6835

n*n的棋盤上擺上n個皇后,使皇后不會相互攻擊。

public class nqueenpuzzle

//使用棧求解

public void solve_stack()

lastpos.push(i);

lastpos.push(-1);

break;

}

}

}

}//使用遞迴求解

public void solve()

", sw.elapsed);

if (solutioncount == 0)

queen", queenamount);

}

else

result for puzzle with queen", solutioncount, queenamount);

}

}private void locate(int k)

*****", this.solutioncount);

this.printresult();

return;

}for (int i = 0; i < queenamount; i++)

}

}private void printresult()

console.writeline();

}console.writeline();

}private bool validate(int k)

}

return valid;

}

}使用下面的方法輸出8皇后解決方案。

nqueenpuzzle puzzle = new nqueenpuzzle(8);

puzzle.solve();

一組寶石,價值對應values,重量對應weight,乙個揹包最大承重capcity,求怎樣選擇寶石,可使揹包裝下價值最多?

public class bagpack0_1

public void solve()

else

}

}console.writeline("max values:", m[n, capcity]);

this.showresult(m, n, capcity);

}private void showresult(int[,] m, int i, int j)

if (j >= weight[i - 1] && m[i, j] == m[i - 1, j - weight[i - 1]] + values[i - 1])

, weight:, value: selected ", i, weight[i - 1], values[i - 1]);

}

else

}測試用例:

int w = ;

int v = ;

int capacity = 36;

bagpack0_1 bp = new bagpack0_1(v, w, capacity);

bp.solve();

兩個陣列a、b,求最大子串。

public class maxsubstring

//最大子串引申問題。兩個字串最長相同子串。

public void solve_continuous()

}

}console.writeline("maxlen is:", maxlen);

for (int i = maxlen; i > 0; i--)

}//陣列m記錄最大子串長度

public void solve2()

else

else

}

}

}this.showresult2(m, m - 1, n - 1);

console.writeline();

}private void showresult2(int[,] m, int i, int j)

if (m[i, j] == m[i - 1, j])

else if (m[i, j] == m[i, j - 1])

else

}//使用輔助陣列s,記錄陣列元素是否是最大子串成員

public void solve1()

for (int i = 0; i < n; i++)

for (int i = 1; i < m; i++)

else

else

}

}

}console.writeline("max sub list count:", m[m - 1, n - 1]);

showresult(s, m - 1, n - 1);

console.writeline();

}private void showresult(int[,] s, int i, int j)

if (s[i, j] == 3)

else if (s[i, j] == 1)

else if (s[i, j] == 2)

}測試:

int a = new ;

int b = ;

maxsubstringmss = new maxsubstring(a, b);

mss.solve1();

python小玩意二

建立乙個列表 list1 a b c d e print list1 建立乙個列表 list1 a b c d 2 e print list1 建立乙個列表 list1 a b c d list1.pop print list1 建立乙個列表 list1 a b c d list1.pop 2 pr...

一點小玩意

include include using namespace std define pass what int main 輸出 4 4 4 5 4 4 a a 同樣乙個字串 what 用巨集定義pass之後,pass既可以當做指標用,也可以當做變數名用,而用字串pass定義的話只能用作乙個變數名,...

晚上擺弄的小玩意

include void p char s,int a void f char s,int a int main 我想用hacker的手段來修改f函式的返回位址,可惜的是一直沒有成功,不過倒是把引數值給改了,列印了hi和2之後就是段錯誤,怎樣解決這個段錯誤,暫還沒有辦法。直接看main函式內生成的彙...