小编csh*_*579的帖子

将锯齿状2D阵列中的元素组合成一个新的锯齿状2D阵列(深层复制问题)

给出两个锯齿状数组:a&b其中a + b将始终具有相同的行数:

int[][] a = { {1,2}, {4,5,6} };
int[][] b = { {7}, {8,9,0} };
Run Code Online (Sandbox Code Playgroud)

我怎样才能操纵一个新的锯齿状数组c返回: { {1,2,7}, {4,5,6,8,9,0} }

这是我到目前为止所拥有的:

int[][] c = null;    
for(int i = 0; i<a.length; i++){
        c = new int[a.length][a[i].length + b[i].length];
}

//rest of my code for assigning the values into the appropriate position works.
Run Code Online (Sandbox Code Playgroud)

正如你们所看到的那样,麻烦出现了,我正在执行一个深层复制,在for循环的第二次迭代中,它将所有行设置为迭代步骤中当前行长度的长度.

java arrays

10
推荐指数
1
解决办法
494
查看次数

检查字符串是否包含在语言中(Prolog)

这是CFG:

S -> T | V
T -> UU
U -> aUb | ab
V -> aVb | aWb
W -> bWa | ba
Run Code Online (Sandbox Code Playgroud)

所以这将接受某种形式的:

{a^n b^n a^m b^m | n,m >= 1} U {a^n b^m a^m b^n | n,m >= 1}
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码:

in_lang([]).  
in_lang(L) :-
    mapS(L), !.

mapS(L) :-
    mapT(L) ; mapV(L),!.

mapT(L) :-
    append(L1, mapU(L), L), mapU(L1), !.

mapU([a|T]) :-
    ((append(L1,[b],T), mapU(L1)) ; (T = b)),!.

mapV([a|T]) :-
    ((append(L1,[b],T), mapV(L1)) ; 
     (append(L1,[b],T), mapW(L1))),
    !.

mapW([b|T]) :-
    ((append(L1,[a],T), mapW(L1)) …
Run Code Online (Sandbox Code Playgroud)

prolog context-free-grammar dcg

4
推荐指数
1
解决办法
647
查看次数

标签 统计

arrays ×1

context-free-grammar ×1

dcg ×1

java ×1

prolog ×1