1

それで、私はC ++で簡単にプロジェクトを完了しましたが、Javaで作成することになっていることに気づきました。私のコードが次のような多次元ベクトルを使用していることを除いて、これはそれほど大きな問題ではありません。

vector <vector<int> > arr  

プログラムを大幅に書き直さなくても同じ結果が得られるJavaに相当するものはありますか?

翻訳に問題があるC++プログラムのコードスニペットは次のとおりです。

vector <vector <int> > arr;

cin >> n;

while (n > 0)
{
    vector <int> row;
    int u;

    for (int i = 0; i < n ; ++i)
    {
        cin >> u;
        row.push_back(u);
    }

    arr.push_back(row);

    n = comb(row.size(), k);
    k++;
}

for (int i = 0; i < arr.size(); i+=2)
    for (int j = 0; j < arr[i].size(); ++j)
        sum += arr[i][j];

for (int i = 1; i < arr.size(); i+=2)
    for (int j = 0; j < arr[i].size(); ++j)
        diff += arr[i][j];
4

3 に答える 3

3

ArrayListを使用してコードを適合させることができます。これが小さな例です。

 ArrayList <ArrayList<Integer>> aa = new ArrayList<ArrayList<Integer>>();
    aa.add(new ArrayList<Integer>());
    aa.get(0).add(10);

編集

コードは次のようになります

    ArrayList <ArrayList<Integer>> arr = new ArrayList<ArrayList<Integer>>();
    BufferedReader br = new BufferedReader (new InputStreamReader(System.in));

    int n;
    n=br.read();
    while (n>0)
    {
        ArrayList<Integer> row = new ArrayList<Integer>();
        int u;
        for (int i=0;i<n;i++)
        {
            u=br.read();
            row.add(u);

        }
        arr.add(row);
        //I don't know this function
        n=com(row.size(),k);
        k++;
    }
    for (int i=0;i<arr.size();i+=2)
        for (int j=0;j<arr.get(i).size())
            sum+=arr.get(i).get(j);
于 2013-02-04T15:06:01.883 に答える
3

ArrayListとして宣言する場合、は必要な機能を提供する必要がありますArrayList<ArrayList<Integer>>。への呼び出しpush_back()は、への呼び出しと同等add()です。配列インデックスアクセス表記は失われますが、これはへの呼び出しを連鎖させることで解決できますget()

于 2013-02-04T15:03:36.763 に答える
2

Javaも多次元ベクトルを取得しました。使用するだけ

ArrayList<ArrayList<Integer>>arr=new ArrayList();
于 2013-02-04T15:02:52.820 に答える