lecture2

24
競プロ講義 2

Upload: okuraofvegetable

Post on 08-Jul-2015

71 views

Category:

Food


1 download

DESCRIPTION

中1用 NPCA Lecture 2

TRANSCRIPT

Page 1: Lecture2

競プロ講義

第2回

Page 2: Lecture2

● みなさんAOJ Volume 100の最初の20問やって来ましたか???

● まだの人はお家でやっといてね

● 今から皆さんがつまづきそうな所の解説をします

Page 3: Lecture2

● AOJ 10004 Sorting Three Numbers

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10004

● 3つの数値が与えられるので小さい順に出力

● 3つの数の大小関係は高々6通りだしすべての場合に分けたら良さそう

Page 4: Lecture2

int a,b,c;

scanf(“%d %d %d”,&a,&b,&c);

if(a<=b&&b<=c){…}

else if(a<=c&&c<=b){…}

else if(b<=a&&a<=c){…}

else if(b<=c&&c<=a){…}

else if(c<=a&&a<=b){…}

else {…}

Page 5: Lecture2

    冗長

Page 6: Lecture2

● aとbを比較してbのほうが小さかったら交換● bとcを比較してcのほうが小さかったら交換

- この時点でcが最大であることが確定● aとbを比較してbのほうが小さかったら交換

- この時点でbが2番目に大きいことが確定

- よって自動的にaが3番目に大きいことが確定

Page 7: Lecture2

a b c

3 8 1

Page 8: Lecture2

a b c

3 < 8 1

Page 9: Lecture2

a b c

3 8 1

Page 10: Lecture2

a b c

3 8 > 1

Page 11: Lecture2

a b c

3 1 8

Page 12: Lecture2

a b c

3 1 8

Page 13: Lecture2

a b c

3 > 1 8

Page 14: Lecture2

a b c

1 3 8

Page 15: Lecture2

a b c

1 3 8

Page 16: Lecture2

● この考え方はバブルソートというアルゴリズムに

つながります

● ここで一つ実装上の注意

Page 17: Lecture2

aとbの値を入れ替えたい

● aとbの値を入れ替える時、

a=b;

b=a;

● としてはいけない。その理由は?

Page 18: Lecture2

たとえば

● a=2,b=1のとき

a=b; // aにbの値が代入される。a=1,b=1

b=a; // bにaの値が代入される。a=1,b=1

● おかしい

Page 19: Lecture2

どうすればいいか

● 一旦値を保存しておく変数を用意すればいい。

int a,b,tmp;

tmp=a;

a=b;

b=tmp;

Page 20: Lecture2

どうすればいいか

● a=2,b=1のとき

tmp=a; // tmp=2 , a=2 , b=1

a=b; // tmp=2 , a=1 , b=1

b=tmp; // tmp=2 , a=1 , b=2

● ちゃんとできてる● 10007: Swapping Two Numbers でも同じように注意

Page 21: Lecture2

ASCIIコードと再帰のお話

● http://e-words.jp/p/r-ascii.html

● http://www.c-tipsref.com/tips/math/o_factorial.html

Page 22: Lecture2

ASCIIコードと再帰のお話

● http://e-words.jp/p/r-ascii.html

● http://www.isc.meiji.ac.jp/~daishin/suukei1/12.html

Page 23: Lecture2

Coding Phase (90分)

AOJ Volume 100 10020~10029

Page 24: Lecture2

ヒント

● 三平方の定理

● S=(1/2)a*b*sinC

● Σ(k=1,N)k = 1+2+…+N-1+N