0

我有

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 的一个 D 元素的长度[m][o] 是 4,d[k]对于每个 k 分别是 68、72、22、36,作为 s 和 q 的和积。帮助将不胜感激。

4

1 回答 1

0
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]
于 2021-08-23T07:35:00.340 回答