on
[백준][Java] 2961번 도영이가 만든 맛있는 음식 (브루트포스)
[백준][Java] 2961번 도영이가 만든 맛있는 음식 (브루트포스)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; public class Main { private static BufferedReader br = new BufferedReader( new InputStreamReader( System . in )); private static BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( System . out )); private static int [][] raw; private static int res; private static int N; private static List < Integer > list; private static void cookComb( int currIdx, int pos, int num) { if (pos = = num) { int sour = 1 ; int bitter = 0 ; for (Integer i : list) { sour * = raw[i][ 0 ]; bitter + = raw[i][ 1 ]; } int diff = Math.abs(sour - bitter); if (diff < res) res = diff; } for ( int i = currIdx + 1 ; i < N; i + + ) { list. add (i); cookComb(i, pos + 1 , num); list.remove(list.size() - 1 ); } } public static void main( String [] args) throws IOException{ N = stoi(br.readLine()); res = Integer.MAX_VALUE; raw = new int [N][ 2 ]; list = new ArrayList < > (); for ( int i = 0 ; i < N; i + + ) { String [] str = br.readLine(). split ( " " ); raw[i][ 0 ] = stoi(str[ 0 ]); raw[i][ 1 ] = stoi(str[ 1 ]); } for ( int num = 1 ; num < = N; num + + ) { cookComb( - 1 , 0 , num); } bw.write( String . valueOf (res)); bw.flush(); bw.close(); } private static int stoi( String input) { return Integer. parseInt (input); } } Colored by Color Scripter
from http://aig2029.tistory.com/325 by ccl(A) rewrite - 2021-10-06 07:02:05