同じものを含む順列の問題をJavaでプログラムを作って解いてみました。こちらの問題の方が、前回の問題に比べて基本的かな。(^_^;
「MATHEMATICS」の11文字から4文字を取りだして1列に並べる方法は何通りあるか?
●PermSame02.java
/* * PermSame02.java * */ import java.util.Arrays; class PermSame02 { static boolean next_perm(char[] p, int n, int r) { int i, j; char t; if(r <= 0 || n < r) return(false); for(i = r + 1; i <= n-1; i++) for(j = i; j >= r + 1 && p[j-1] < p[j]; j--){ t = p[j]; p[j] = p[j-1]; p[j-1] = t; // swap(p,j,j-1); } for(i = n - 1; i > 0 && p[i-1] >= p[i]; i--); if(i==0) return(false); for(j = n - 1; j > i && p[i-1] >= p[j]; j--); t = p[j]; p[j] = p[i-1]; p[i-1] = t; // swap(p,j,i-1); for(j = n - 1; i < j; i++, j--){ t = p[i]; p[i] = p[j]; p[j] = t; // swap(p,i,j); } return(true); } public static void main(String[] args) { final String P="MATHEMATICS"; final int N=P.length(); final int R=4; char[] p=P.toCharArray(); // 順列生成用 long tm=System.nanoTime(); // Timer Start int count=0; Arrays.sort(p); // 必須のソート do{ count++; }while(next_perm(p,N,R)); System.out.println("計: "+count); tm=System.nanoTime()-tm; // Timer Stop System.out.printf("Runtime : %.3f [sec]\n",(double)tm/1e9); } }
●実行結果
計: 2454 Runtime : 0.002 [sec]
※参考URL
●同じものを含む順列の問題をPythonで解いてみた。
●同じものを含む順列の問題をPythonで解いてみた。(2)
●同じものを含む順列の問題を十進BASICで解いてみた。
●同じものを含む順列の問題をVisual Basicで解いてみた。
- 作者: 安田亨
- 出版社/メーカー: 東京出版
- 発売日: 2014/08/15
- メディア: 単行本
- 購入: 6人 クリック: 42回
- この商品を含むブログ (16件) を見る
日本一わかりやすい 坂田アキラの 確率が面白いほどとける本 (坂田アキラの理系シリーズ)
- 作者: 坂田アキラ
- 出版社/メーカー: 中経出版
- 発売日: 2011/09/14
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 7回
- この商品を含むブログを見る
細野真宏の確率が本当によくわかる本 (細野真宏の数学が よくわかる本)
- 作者: 細野真宏
- 出版社/メーカー: 小学館
- 発売日: 2003/08/25
- メディア: 単行本
- 購入: 3人 クリック: 131回
- この商品を含むブログ (14件) を見る
マスター・オブ・場合の数―大学への数学 (分野別重点シリーズ (2))
- 作者: 栗田哲也,福田邦彦,坪田三千雄
- 出版社/メーカー: 東京出版
- 発売日: 1999/10/30
- メディア: 単行本
- 購入: 3人 クリック: 12回
- この商品を含むブログ (6件) を見る
- 作者: 福田邦彦
- 出版社/メーカー: 東京出版
- 発売日: 2004/08/25
- メディア: 単行本
- 購入: 4人 クリック: 18回
- この商品を含むブログ (6件) を見る