アイデア:
N個の個別のコストのメモリアレイは、メモリの別のセットは、順序に関係なく、変更を探し
コード:
輸入はjava.util.ArrayList; インポートjava.util.Scanner; パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ のArrayList <整数>リスト= 新規のArrayList <> (); スキャナSC = 新しいスキャナ(System.in)。 INT、N = sc.nextInt()。 INT [] ARR = 新しい INT [N]。 以下のために(INT iが= 0、I <N; I ++ ){ ARR [I] = sc.nextInt()。 } System.out.println(テスト(ARR、リスト))。 } パブリック 静的文字列試験(INT [] ARR、のArrayList <整数> リスト){ int型 KEYI = 0 。 以下のために(INT ; I <arr.length; iが0 = I ++ ){ 場合(ARR [I] == 25 ){ list.add(ARR [I])。 KEYI ++ ; } そう であれば(ARR [I] == 50 ){ ため(INT J = 0; J <はlist.size(); J ++ ){ もし(list.get(J)== 25 ){ list.remove(J)。 list.add( 50 )。 KEYI ++ ; 休憩; } } } そう であれば(ARR [I] == 100 ){ int型 twenteFive = 0 。 INT = 0 50 ; 用(int型 J = 0; jは<はlist.size(); J ++ ){ 場合(list.get(J)== 25 ){ twenteFive++ ; } そう であれば(list.get(J)== 50 ){ 50 ++ 。 } } もし(twenteFive> = 3 || 50> = 1 && twenteFive> = 1 ){ 場合(50> = 1 && twenteFive> = 1 ){ ため(INT J = 0; J <はlist.size(); J ++ ){ 場合( list.get(J)== 25 ){ list.remove(J)。 休憩; } } のための(INTJ = 0; J <はlist.size(); J ++ ){ 場合(list.get(J)== 50 ){ list.remove(J)。 休憩; } } KEYI ++ 。 } そう であれば(twenteFive> = 3 ){ ため(INT J = 0; J <3; J ++ ){ ため(INT J2 = 0; J2 <はlist.size(); J2 ++ ){ 場合(list.get(J2) == 25 ){ list.remove(J2); ブレーク; } } } KEYI ++ ; } } } } もし(KEYI == arr.length){ リターン "YES" ; } 他{ リターン " NO」; } } }