如何在复杂的IBM ilog中找到数组的长度和数组的和,然后找到两个diff数组的和积?



我有

int a ;
int b ; 
int c ;
range m= 1..a;
range n= 1..b;
range o= 1..c;
int s[m]=[11,1,1,1,1,1,1,1,1,1];
int q[m][o]=[[4,5,0,2],[3,2,1,0],[0,1,4,5],[3,2,0,1],[2,1,3,2],[4,3,2,1],[3,4,2,0],[5,0,3,1],[0,4,3,3],[4,0,4,1]];
a=length(s);
b= sum(i in m) s[i];
c=length(q[m]);
int d[o]
forall(k in o)
int d[k]= sum(i in m) (s[i]*q[i][k]);

a,b,c,d的语句不正确。我不想直接对a b c d进行初始化,我需要将a存储为s[m]的长度,也就是10,b存储为s[m]的和,也就是20,c存储为q[m][o]的一个d元素的长度,也就是4,d[k]存储为每个k的s和q的和,分别是68 72 22 36。如果你能帮忙,我将不胜感激。

int a=10 ;

int c=4 ;
range m= 1..a;
range o= 1..c;
int s[m]=[11,1,1,1,1,1,1,1,1,1];
int q[m][o]=[[4,5,0,2],[3,2,1,0],[0,1,4,5],[3,2,0,1],[2,1,3,2],[4,3,2,1],[3,4,2,0],[5,0,3,1],[0,4,3,3],[4,0,4,1]];
//a=length(s);
int b= sum(i in m) s[i];
//c=length(q[m]);
int d[k in o]=sum(i in m) (s[i]*q[i][k]);
execute
{
writeln("d=",d);
}

工作良好,并给出

d= [68 72 22 36]

最新更新