次に部分集合である場合。既に真部分集合である場合が除外されているとすると,
こののちに,
ソースコード:HairetsuDeBubunShugoHantei.
01: //サンプルコード
02: //部分集合・真部分集合の判定
03: //filename : HairetsuDeBubunShugoHantei.java
04:
05: class HairetsuDeBubunShugoHantei {
06: public static void main(String[] args) {
07: char a[] = {’a’,’b’,’c’,’d’,’e’};
08: // char b[] = {’b’,’d’,’a’,’c’,’e’}; //部分集合,かつ等価な集合
09: char b[] = {’a’,’b’,’c’}; //真部分集合
10: // char b[] = {’a’,’b’,’c’,’f’}; //重複部分のある集合
11: // char b[] = {’x’,’y’,’z’}; //一致する部分のない集合
12:
13: //A とB の関係確認
14: int match = 0;
15: for( int i = 0;i<a.length;i++){
16: for( int j = 0;j<b.length;j++){
17: if (a[i] == b[j]){
18: ++match;
19: break;
20: }
21: }
22: }
23: //結果表示
24: if (match == a.length ^ match == b.length){
25: System.out.println("真部分集合です。");
26: } else if (a.length == b.length && match == a.length) {
27: System.out.println("部分集合です。");
28: } else if (match == 0) {
29: System.out.println("一致する要素はありません。");
30: } else
31: System.out.println("重複部分のある集合です。");
32:
33: }// end of main
34: }// end of class HairetsuDeBubunShugoHantei
ソースコード:ArrayListDeBubunShugoHantei.
01: //サンプルコード
02: //部分集合・真部分集合の判定ArrayList 版
03: //filename : ArrayListDeBubunShugoHantei.java
04: import java.util.ArrayList;
05:
06: class ArrayListDeBubunShugoHantei {
07: public static void main(String[] args) {
08:
09: //初期化
10: ArrayList A = new ArrayList(); //集合A
11: char a[] = {’a’,’b’,’c’,’d’,’e’};
12: for (int i = 0 ; i < a.length ; ++i )
13: A.add( Character.toString(a[i]) );
14: ArrayList B = new ArrayList();//集合B
15: // char b[] = {’b’,’d’,’a’,’c’,’e’}; //部分集合,かつ等価な集合
16: char b[] = {’a’,’b’,’c’}; //真部分集合
17: // char b[] = {’a’,’b’,’c’,’f’}; //重複部分のある集合
18: // char b[] = {’x’,’y’,’z’}; //一致する部分のない集合
19: for (int i = 0 ; i < b.length ; ++i )
20: B.add( Character.toString(b[i]) );
21:
22: //A とB の関係確認
23: int match = 0;
24: //一致する要素の数をカウントする
25: for (int i = 0 ; i < B.size() ; ++i )
26: if ( A.contains( B.get(i) ) == true ) ++match;
27: //結果の表示
28: if (match == A.size() ^ match == B.size()){ // 真部分集合
29: System.out.println("真部分集合です。");
30: } else if (match == A.size() && A.size() == B.size() ) {
31: System.out.println("部分集合です(等しい集合です)。");
32: } else if (match == 0){
33: System.out.println("一致する要素はありません。");
34: } else
35: System.out.println("重複部分のある集合です。");
36:
37: }// end of main
38: }// end of class ArrayListDeBubunShugoHantei
今回はここまで
演習問題はいかがでしたか?
今回のまとめ
- 問題を解く場合に,
文章をいったん図に表現するとよいでしょう。 - ArrayListは大変便利です。