详细问题见此地址:https://blog.csdn.net/weixin_45972337/article/details/106473968
请各位指导。
详细问题见此地址:https://blog.csdn.net/weixin_45972337/article/details/106473968
请各位指导。
哇,看了眼代码,我觉得主要的问题是不规范,语法有问题,建议换个编译器试试。问题注释在代码里。
int main(){
int nc, np;
scanf("%d", &nc);
long long A[nc], B[np]; // 这里的np未赋值,就开数组,应该开不出来的
for(int i = 0; i < nc; i++){
scanf("%lld", &A[i]);
}
scanf("%d", &np);
for(int i = 0; i < np; i++){
scanf("%lld", &B[i]);
}
sort(A, A+nc, cmp2);
sort(B, B+np, cmp2);
long long ans = 0;
// for(int i = 0; i < nc; i++){
// printf("%lld:%lld ",A[i], B[i]);
// }
for(int i = 0; B[i] >0 && A[i] > 0; i++){ // 我没看题,这里没考虑数组越界
ans += A[i] * B[i];
}
for(int i = min(nc, np)-1; B[i] < 0 && A[i] < 0; i--){ // 这里也没考虑数组越界
ans += A[i] * B[i];
}
printf("输出结果:");
printf("*%lld*", ans);
return 0;
}
首先把程序写规范,想开np、nc的大小的数组建议还是用vector的resize,这种开定长数组不是所有编译器能通过的比如vs。