我想做一個簡單的程序,找到獲得與美式足球可用得分方法得分的所有可能性。Java多線程|尋找所有的可能性
這裏是我的代碼工作,並返回所有possiblities的得分
for (int a = 0; (a * sf) <= score; a++) {
for (int b = 0; (b * fg) + (a * sf) <= score; b++) {
for (int c = 0; (c * td) + (b * fg) + (a * sf) <= score; c++) {
for (int d = 0; (d * tdE) + (c * td) + (b * fg) + (a * sf) <= score; d++) {
for (int e = 0; (e * td2) + (d * tdE) + (c * td) + (b * fg) + (a * sf) <= score; e++) {
if ((((a) * sf) + ((b) * fg) + ((c) * td) + ((d) * tdE) + ((e) * td2)) == score) {
count++;
// System.out.println((a)+" Safties | "+(b)+" Field Goals | "+(c)+" TD | "+(d)+" TD w/ E | "+(e)+" TD w/ 2PC ");
}
}
}
}
}
}
我想讓它這樣我就可以分手了比分變成多線程使程序可以多得更快處理更大的數字。
目前我正在測試4個線程,我正在使用這個循環。
for (int a = min; (a * sf) <= max; a++) {
for (int b = min; (b * fg) + (a * sf) <= max; b++) {
for (int c = min; (c * td) + (b * fg) + (a * sf) <= max; c++) {
for (int d = min; (d * tdE) + (c * td) + (b * fg) + (a * sf) <= max; d++) {
for (int e = min; (e * td2) + (d * tdE) + (c * td) + (b * fg) + (a * sf) <= max; e++) {
if ((((a) * sf) + ((b) * fg) + ((c) * td) + ((d) * tdE) + ((e) * td2)) == max) {
main.inc();
System.out.println((a)+" Safties | "+(b)+" Field Goals | "+(c)+" TD | "+(d)+" TD w/ E | "+(e)+" TD w/ 2PC ");
}
}
}
}
}
}
例如,如果得分爲500 線程1將得到I-125, 線程2,126-250, 線程3,251-375, 螺紋4,376 500
我有正確的分裂,並給予正確的最小最大值,但它仍然無法正常工作。我相信它必須在每個循環開始的地方做些事情,但我不確定。任何幫助將不勝感激。如果需要更多的解釋,請讓我知道
是啊...這似乎很簡單。 –
@MuratK。那麼你爲什麼要發佈而不提出任何建議? – brendan612
你的問題確實需要一個[mcve]而不僅僅是片段。 – Gimby