2017-03-29 9 views
2

次のJava割り当てがあります。ボードゲームでは、6面のサイコロを振って同じ数のスペースを移動することができます。目標が開始点から「n」離れた場所にある場合、「n」に正確に到達する可能性のあるすべての方法を計算するプログラムを実装するにはどうすればよいですか?私は頭を絞っていますが、私は解決策を見つけることができません、私はネットを検索しましたが、何も私が正確にしたいものはありません。私はそれがそれほど難しくないことを知っている、私はそれを行う正しい方法を見つけることができません。6面ダイス1枚で、特定の数字に達する可能性のある方法を計算してください

ありがとうございます。

+3

これまでに何を試しましたか?コードにはどんな問題がありますか? – RK1

+0

まず、どのようにこれを行うのかを英語で説明する必要があります。たとえば、n = 6とします。それは単6、5 + 1、または4 + 2または4 + 1 + 1、または3 + 3、または3 + 2 + 1、または3 + 1 + 2、または3 + 1 + 1 + .....どのようにその可能性のリストを決定しますか? – dcsohl

+1

あなたの最初のロールは、1から6の範囲の数字xを与えます。それぞれについて、残りのn-xスペースを進める方法のサブ問題があります。 – Harald

答えて

1

これを行うには複数の方法がありますので、私はそれを一般的に保つつもりです。 可能なすべての置換を決定し、値を格納します。ロールを作り、合計を得る。合計と一致する置換を選んでください。

class Roll { 
    int first; 
    int second; 
    int total; 

    public Roll(int first, int second) { 
     this.first = first; 
     this.second = second; 
     this.total = first + second; 
    } 

List<Roll> permutations = new ArrayList<>(); 
for (int ii = 1; ii < 7; ii++) 
    for (int jj = 1; jj < 7; jj++) 
     permutations.add(new Roll(ii,jj); 

roll the dice, determine the total; 
now loop through the permutations to find the 
    total matching the roll total. These are your combinations. 
    This solution doesn't handle duplicate rolls. For example 1,6 and 6,1; 
関連する問題