AOJ0082 Flying Jenny
問題リンク Flying Jenny
- 解法
乗り物の並びは4,1,4,1,2,1,2,1で固定です。先頭の乗り物を0〜7番の乗り場にしたときに何人残るかを全部試します。
乗り物を文字列で表現("41412121"など)すれば、辞書式で一番小さいものが答えになります。
- ソース
import java.util.Scanner; //Flying Jenny public class AOJ0082 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] c = {4,1,4,1,2,1,2,1}; while(sc.hasNext()){ int[] a = new int[8]; for(int i=0;i<8;i++)a[i]=sc.nextInt(); int min = Integer.MAX_VALUE; String v = ""; for(int top=0;top<8;top++){ int r = 0; String m = ""; for(int j=0;j<8;j++){ r += Math.max(0, a[j]-c[(top+j)%8]); m += c[(top+j)%8]; } if(r<min){ min = r; v = m; } else if(r==min&&m.compareTo(v)<0)v = m; } System.out.print(v.charAt(0)); for(int i=1;i<8;i++)System.out.print(" "+v.charAt(i)); System.out.println(); } } }