0

特定の電話番号に対して再帰を行っており、番号の可能なすべての文字列表現を出力しています。問題は、for (int j=0;j<ops;j++) {繰り返しごとに「perm」ArrayList のサイズが増加し続けるループにあります。固定パターンを取得し、perm = 11 などの新しい番号を追加し、tperm=110,111,112 で再帰を呼び出したいと考えています。

import java.util.*;

public class phoneNum {

    public static void getSt ( List<Integer>list , List<Integer> perm ) {

        Integer len = list.size();
        Integer len1 = perm.size();
        Integer ops = 0;

        if (len == len1) {

            for(int k=0;k<len;k++) {
                System.out.print(" " + list.get(k));
            }
            for(int k=0;k<len;k++) {
                System.out.print(" " + perm.get(k));
            }
            System.out.print("====");
            System.out.print(getPattrn(list,perm));
            System.out.println("\n");

        } else {
            for (int i=0; i<len1+1; i++) {
                if(list.get(i) == 7 || list.get(i) == 9) {
                    ops = 4;
                } else {
                    ops = 3;
                }
                for (int j=0;j<ops;j++) {
                    List<Integer> tperm = new ArrayList<Integer>(perm);
                    tperm.add(i,j);
                    System.out.println("Size=" +  tperm.size() + " ---" + perm.size());
                    getSt(list,tperm);
                }
            }
        }
    }
4

1 に答える 1

0

内部 for ループの最後に tperm.remove(i) を追加できます。

于 2013-08-23T00:24:38.007 に答える