求助各位同学。请问以下两种写法有什么区别?
第一种写法:
for (int i = 1; i <= n; ++ i) {
for (int j = i + 1; j <= n; ++ j) {
while (a[j][i]) {
int r = a[i][i] / a[j][i];
for (int k = i; k <= n; ++ k) {
a[i][k] = (a[i][k] - 1LL * r * a[j][k] % mod + mod) % mod;
}
res = -res;
swap(a[i], a[j]);
}
// swap(a[i], a[j]); res = -res;
}
}
第二种写法:
for (int i = 1; i <= n; ++ i) {
for (int j = i + 1; j <= n; ++ j) {
while (a[i][i]) {
int r = a[j][i] / a[i][i];
for (int k = i; k <= n; ++ k) {
a[j][k] = (a[j][k] - 1LL * r * a[i][k] % mod + mod) % mod;
}
res = -res;
swap(a[i], a[j]);
}
swap(a[i], a[j]); res = -res;
}
}
第一种写法超时,只有46分。第二种写法AC。
我感觉是复杂度的问题,但具体也不知道到底有什么区别。