Javaプログラミング学習サイト ゆるゆるプログラミング

・Javaソースダウンロード(NumberCombo1.java)

整数型の配列の中に、同じ値の数値が何種類あるか求めるJavaソースコードです。配列の昇順ソートで同じ値が連続することを利用して、同じ値の組み合わせ数を求めています。

このソースについての記事はこちら「同じ数の組み合わせ」です。

NumberCombo1.javaをダウンロード

ダウンロードしたファイルはzip形式です。解凍して使ってください。Windowsの場合、ダウンロードしたzipファイルをマウスの右ボタンでクリックして表示されるポップアップメニューから「すべて展開(T)」で解凍できます。

import java.util.Arrays;

public class NumberCombo1 {
	// 数の組み合わせ数を取得
	public static int numberCombo( int[] ary )
	{
		int nc;		// 組み合わせ数
		int prenum;	// 1つ前の番号
		int[] tempary;	// 作業用の配列

		// aryがnullなら0を戻す
		if ( null == ary ) return 0;

		// aryの数が0以下ならaryの数を戻す
		if ( 1 >= ary.length ) return ary.length;

		// 元の配列の順番を変えないように配列をコピー
		tempary = array_copy( ary );

		// 昇順ソート
		Arrays.sort( tempary );

		// 組み合わせの数の取得処理
		// 組み合わせ数の初期値を代入
		nc = 1;
		prenum = tempary[ 0 ];
		// 処理本体
		for ( int i = 1; i < tempary.length; ++ i )
		{
			// 1つ前の値と一致しなければ
			if ( prenum != tempary[ i ] ) {
				// 組み合わせの数を増やす
				++ nc;
				prenum = tempary[ i ];
			}
		}

		// 結果を戻す
		return nc;
	}


	// 配列をコピー作成するメソッド
	private static int[] array_copy( int[] srcary )
	{
		// 元の配列srcaryの要素数でint配列desaryを作成
		int[] desary = new int[ srcary.length ];

		// 配列desaryにsrcaryの値を代入
		for ( int i = 0; i < srcary.length; ++ i ) {
			desary[ i ] = srcary[ i ];
		}

		// 作成した配列desaryを戻す
		return desary;
	}


	// メイン
	public static void main( String[] args ) {
		// 組み合わせ数
		int nc;

		// 配列aを宣言
		int[] a;

		// 要素数10を設定
		a = new int[ 10 ];

		// 値を代入
		a[ 0 ] = 0;
		a[ 1 ] = 5;
		a[ 2 ] = 5;
		a[ 3 ] = 1;
		a[ 4 ] = 3;
		a[ 5 ] = 0;
		a[ 6 ] = 5;
		a[ 7 ] = 2;
		a[ 8 ] = 6;
		a[ 9 ] = 7;

		// 組み合わせ数を取得 (0,1,2,3,5,6,7)の7種類
		nc = numberCombo( a );

		// 結果を表示
		System.out.println( "同じ数の組み合わせ:" + nc );
	}
} 

このソースについての記事はこちら「同じ数の組み合わせ」です。

 

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

 

 

 

 

Topへ