ALG2012-F.ppt

Similar documents
ALG2012-C.ppt

I java A

: : : TSTank 2

ALG2012-A.ppt

K227 Java 2

アルゴリズムとデータ構造1

Microsoft Word - keisankigairon.ch doc

untitled

2

8 if switch for while do while 2

2

明解Javaによるアルゴリズムとデータ構造

r1.dvi

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

アルゴリズムとデータ構造1

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

問題1 以下に示すプログラムは、次の処理をするプログラムである

r02.dvi

10K pdf


アルゴリズムとデータ構造1

解きながら学ぶJava入門編

JavaプログラミングⅠ

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

3 Java 3.1 Hello World! Hello World public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World");

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

新・明解Javaで学ぶアルゴリズムとデータ構造

r3.dvi


JavaプログラミングⅠ

新・明解Java入門

新・明解Javaで学ぶアルゴリズムとデータ構造

(Eclipse\202\305\212w\202\324Java2\215\374.pdf)

JavaプログラミングⅠ

Java Java Java Java Java 4 p * *** ***** *** * Unix p a,b,c,d 100,200,250,500 a*b = a*b+c = a*b+c*d = (a+b)*(c+d) = 225

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

ALG ppt

Java講座

Java学習教材

Java演習(4) -- 変数と型 --

Javaによるアルゴリズムとデータ構造

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

19 3!! (+) (>) (++) (+=) for while 3.1!! (20, 20) (1)(Blocks1.java) import javax.swing.japplet; import java.awt.graphics;

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

(Java/FX ) Java CD Java version Java VC++ Python Ruby Java Java Eclipse Java Java 3 Java for Everyone 2 10 Java Midi Java JavaFX Shape Canvas C

Prog2_9th

2.2 Java C main Java main 2 C 6 C Java 3 C Java ( ) G101Hello.java G101Hello main G101Hello.java /* G101Hello */ class G101Hello { /* main */ public s

(Basic Theory of Information Processing) 1

明解Javaによるアルゴリズムとデータ構造

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

Java updated

プログラミング入門1

JAVA 11.4 PrintWriter 11.5

JavaプログラミングⅠ

オブジェクト指向プログラミング・同演習 5月21日演習課題

226

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac


問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(Java) サンプル問題 知識科目 第 1 問 (

55 7 Java C Java TCP/IP TCP/IP TCP TCP_RO.java import java.net.*; import java.io.*; public class TCP_RO { public static void main(string[] a

Javaプログラムの実行手順

JavaプログラミングⅠ

JavaプログラミングⅠ

人工知能入門

Transcription:

2012 7 26 (sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/lecture/alg/2012/index.html

5 2

3

4

- 5

.. 6

- 7

public class KnapsackBB { // 0-1 private static double maxsofar; private static boolean[] result; private static boolean[] choice; private static void backtrack(int i, double profit, double weight){ if(i >= (items.length-1)){ if(profit > maxsofar){ maxsofar = profit; result = choice.clone(); // else { if(items[i].getweight() <= weight){ choice[i] = true; // i backtrack(i + 1, profit + items[i].getprofit(), weight - items[i].getweight()); double z = 0; double u = weight; int j; for(j = i+1; items[j].getweight() <= u; j++){ u -= items[j].getweight(); z += items[j].getprofit(); z += u*items[j].getvalue(); if((z + profit) > maxsofar){ choice[i] = false; // i backtrack(i+1, profit, weight); 0-1 8

private static ItemBB[] items = { new ItemBB(" ", 10, 100), new ItemBB(" ", 98, 300), new ItemBB(" ", 398, 300), new ItemBB(" ", 1000, 6000), new ItemBB(" ", 398, 800), new ItemBB(" ", 100, 200), new ItemBB(" ", 200, 300), new ItemBB(" ", 980, 2000), new ItemBB(" ", 298, 400), new ItemBB(" ", 1000, 800), new ItemBB(" ", 10, 50), new ItemBB(" ", 20, 60), new ItemBB(" ", 100, 300), new ItemBB(" ", 20, 100), new ItemBB(" ", 100, 250), new ItemBB(" ", 300, 90), new ItemBB(" ", 333, 600), new ItemBB(" ", 198, 300), new ItemBB(" ", 300, 100), new ItemBB(" ", 1000, 200), new ItemBB(" ", 0, Double.POSITIVE_INFINITY) ;, 1000.0, 800.0 public static void main(string[], args) 298.0, { 400.0 double limit;, 200.0, 300.0 try {, 333.0, 600.0 limit = Double.parseDouble(args[0]); catch(exception e){ limit = 9000; Arrays.sort(items); maxsofar = Double.NEGATIVE_INFINITY;, 1000.0, 200.0 choice = new boolean[items.length];, 300.0, 90.0, 300.0, 100.0 backtrack(0, 0, limit); double p = 0, w = 0; int n = 0; for(int i = 0; i < items.length-1; i++){ if(result[i]){ p += items[i].getprofit(); w += items[i].getweight(); n++; System.out.println(items[i]); System.out.print(" : " + limit); System.out.print("\t : " + n); System.out.print("\t : " + w); System.out.println("\t : " + p); [sakai@star bin]$ java complex.knapsackbb 5000, 1000.0, 200.0, 300.0, 90.0, 300.0, 100.0, 398.0, 300.0, 100.0, 200.0, 980.0, 2000.0 : 5000.0 : 10 : 4990.0 : 4909.0 [sakai@star bin]$ java complex.knapsackbb 4900, 398.0, 300.0, 1000.0, 800.0, 298.0, 400.0, 200.0, 300.0, 333.0, 600.0, 980.0, 2000.0, 20.0, 60.0, 10.0, 50.0 : 4900.0 : 11 : 4900.0 : 4839.0 9

10

public class KnapsackDP { // private static void solve(itemdp[] items, int weight, int[] result){ double[] gain = new double[weight+1]; int[] choice = new int[weight+1]; Arrays.fill(choice, -1); - for(int j = 0; j < items.length; j++){ for(int i = 1; i <= weight; i++){ int k = i - items[j].getweight(); if(k >= 0){ if((gain[k] + items[j].getprofit()) > gain[i]){ gain[i] = gain[k] + items[j].getprofit(); choice[i] = j; int k; for(int i = weight; choice[i] >= 0; i -= items[k].getweight()){ k = choice[i]; result[k]++; 11

[sakai@star bin]$ java complex.knapsackdp 1200, 297.0, 298, 4 : 1200 : 4 : 1192 : 1188.0 [sakai@star bin]$ java complex.knapsackdp 1190, 297.0, 298, 3 public static, void main(string[] 288.0, args) 278, { 1 int limit; : 1190 : 4 : 1172 : 1179.0 try { limit = Integer.parseInt(args[0]); [sakai@star bin]$ java complex.knapsackdp 1170 catch(exception e){ limit = 9000;, 297.0, 298, 2, 288.0, 278, 2 int[] result : = new int[items.length]; 1170 : 4 : 1152 : 1170.0 solve(items, limit, result); [sakai@star bin]$ java complex.knapsackdp 1150 double p = 0; int w = 0, n, = 0; 297.0, 298, 1 for(int i =, 0; i < result.length; 288.0, i++){ 278, 3 if(result[i] : > 0){ 1150 : 4 : 1132 : 1161.0 p += items[i].getprofit()*result[i]; [sakai@star bin]$ java complex.knapsackdp 1130 w += items[i].getweight()*result[i];, 288.0, 278, 4 n += result[i]; : 1130 : 4 : 1112 : 1152.0 System.out.println(items[i] [sakai@star bin]$ java + ", " complex.knapsackdp + result[i]); 1110, 297.0, 298, 1 System.out.print(" :, 300.0, 398, " + limit); 2 System.out.print("\t : : 1110 " + n); : 3 : 1094 : 897.0 System.out.print("\t : [sakai@star bin]$ java " + w); complex.knapsackdp 1093 12 System.out.println("\t :, 297.0, 298, 2 " + p);, 300.0, 398, 1 : 1093 : 3 : 994 : 894.0 private static ItemDP[] items = { new ItemDP(" ", 297, 298), new ItemDP(" ", 280, 298), new ItemDP(" ", 295, 335), new ItemDP(" ", 283, 350), new ItemDP(" ", 291, 398), new ItemDP(" ", 270, 350), new ItemDP(" ", 288, 278), new ItemDP(" ", 300, 398), new ItemDP(" ", 265, 298), new ItemDP(" ", 290, 348) ;

13

d AB + d BC d AC 14

1. 2. 3. 4. 1. 2. 3. 15

16

17

: : : : ( ) PHS 18