Java の文字の組み合わせソートは、特に難しい問題ではありません。ブルートフォースとグラフ理論 (深さトラバーサル) の両方が可能で、結果は 198 です。グラフ理論は、無向グラフを構築し、深さ優先再帰を行うことです。 タイトル: 1、2、2、3、4、5 の 6 つの数字を使用して、512234、412345 などのさまざまな配置をすべて出力するメイン関数を Java で記述します。要件は、「4」を 3 番目の位置に配置できないことと、「3」と「5」を接続できないことです。 Javaコード: - パッケージ com.graphic;
- java.util.Iterator をインポートします。
- java.util.TreeSet をインポートします。
- パブリッククラスCharSequence{
- プライベートString[] c = {"1","2","2","3","4","5"};
- プライベートint n = c .length;
- プライベートboolean[]訪問=新しいboolean[n];
- プライベート int[][] g = new int[n][n];
- プライベート TreeSet ts = new TreeSet();
- プライベート文字列結果= "" ;
- パブリックCharSequence(){
- for(int i = 0 ; i
- for(int j = 0 ; j
- i == jの場合、g[i][j] = 0;
- それ以外の場合g[i][j] = 1;
- }
- }
- 3[3][5] = 0;
- 5 3 = 0;
- }
- パブリックvoid depthFirst(intインデックス){
- 訪問[インデックス] = true;
- 結果 += c[インデックス];
- if(result.length() == n){
- ts.add(結果);
- 結果result = result.substring(0,result.length()-1);
- 訪問[インデックス] = false;
- }
- それ以外{
- for(int i = 0 ; i
- if(!visited[i] && g[index][i] == 1){
- 深さ優先(i);
- }そうでない場合は続行します。
- }
- 結果result = result.substring(0,result.length()-1);
- 訪問[インデックス] = false;
- }
- }
- パブリック void グラフィック取得(){
- for(int i = 0 ; i
- 深さ優先(i);
- }
- 整数カウント= 0 ;
- System.out.print("グラフ理論の結果: ");
- イテレータit = ts .iterator();
- while(it.hasNext()){
- 文字列tmp = it .next();
- if(tmp.contains("35")) 続行します。
- if(tmp.contains("53")) 続行します。
- if(tmp.charAt(3) == '4') 継続;
- システム出力をprintln(tmp);
- カウント++;
- }
- System.out.println("合計: "+count+"");
- }
- パブリック void ブルートフォース(){
- System.out.println("ブルートフォース検索の結果: ");
- 整数カウント= 0 ;
- (int i = 122345 ; i < 543222 ; i++){
- 文字列tmp = "" +i;
- if(tmp.charAt(3) == '4') 継続;
- if(tmp.contains("35")) 続行します。
- if(tmp.contains("53")) 続行します。
- if(tmp.contains("5") && tmp.contains("4") && tmp.contains("3") && tmp.contains("1"))
- {
- intインデックス= tmp.indexOf ("2");
- if(インデックス== -1) 継続;
- if( index == tmp.length()-1) 継続;
- if(tmp.substring(index+1).contains("2")){
- システム出力をprintln(tmp);
- カウント++;
- }
- }
- }
- System.out.print("合計: "+count+"");
- }
- パブリック void recrusive(){
- }
- パブリック静的voidメイン(String[] args) {
- CharSequence cs =新しいCharSequence();
- //グラフ理論法
- cs.graphicGet();
- // ブルートフォース検索
- cs.bruteForce();
- }
- }
この例がお役に立つことを願っています。次の記事では、Java ソートアルゴリズムの概要を紹介します。 【編集者のおすすめ】 - Java による CSV 読み取りの実践についての簡単な説明
- Javaアプリケーションのパフォーマンスに関する3つの一般的な課題
- インターネット開発に Java を使用する利点は何ですか?
- Java マルチスレッド プログラミングの詳細な分析
|