有人能帮我解决这个问题吗:我有一个行i,一个一维数组p和一个二维数组(矩阵) Q。所以,问题是我必须用q中的行i初始化一维数组p,而不是使用for循环。我该怎么做呢?
void simVarDiscr(int m, int *x, double *p){//m is the number of elements of x and p
int i;
for(i=0;i<m;i++){
x[i]=i;
init_genrand(254);//is a function from Mersenne-Twister algorithm
p[i]=genrand_int32()%m;
}
}
int LantMarkov(int m,double *pi0,float **Q){
int *s,k,j;double *p;
s=(int *)malloc(n*sizeof(int));
p=(double *)calloc(m,sizeof(double));
simVarDiscr(m,s,pi0);
j=s[0];
for(k=0;k<n;k++){
memcpy(p, Q[j], m);
simVarDiscr(m,s,p);
j=s[k];
}发布于 2013-05-20 06:41:04
答案取决于对您的问题的解释:“使用q中的行i初始化一维数组p,而不使用for循环”-因为您的代码不会使用for循环使用Q中的行初始化p。
for循环可以由while循环甚至递归替换。p或Q的类型以使它们兼容(例如,两个float),则可以使用D12将D13复制到D14;我不确定这是否对您有帮助,因为您的代码中已经有一些D15(有两个错误,因此无法工作)。H216Q中的一行;这不需要循环。例如:-
void simVarDiscr(int m, int *x, float *p) // changed from double to float
{
... // No change in code
}
int LantMarkov(int m,double *pi0,float **Q)
{
...
for(k=0;k<n;k++){
p = Q[j];
// The following code changes p and j'th row of Q in the same manner
...
}
}https://stackoverflow.com/questions/16638850
复制相似问题