Nhờ tối ưu hóa đoạn mã nguồn và giải thích ý nghĩa tích cực của đoạn mã chuyển

Bài 1: Tối ưu hóa đoạn mã nguồn sau, giải thích ý nghĩa tích cực của đoạn mã chuyển.

a)

for (i = 1; i < n; i++)
{
    k = i * 4 + m;
    c = 2 * a[k];
}

b)

for (i = 0; i < n; i++)
{
    if (y < x) a[i]++;
    else a[i]--;
}

c)

for (i = 0; i < n; i++) {
    if (y < x) a[i]++;
    else a[i]--;
}

d)

for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
        if (j < i) a[i][j]++;
        else a[i][j]--;

e )

for (y = 0; y < n; y++)
    for (x = 0; x < m; x++)
        arr[x][y] = arr[x][y] + 1;
    
sum = 0;
i = 1;
while (i <= count) {
    sum += i;
    i++;
}

:disappointed_relieved: ac nào giúp em với

Người thảo luận để tìm ra cách giải hay cho một bài toán khó sẽ trở thành lập trình viên giỏi. Người hay hỏi bài tập thì không. Còn bạn thì sao?

:sunglasses:

1 Like

Câu b và c giống nhau. Theo mình tối ưu 2 câu đầu như sau:

a)

for (i = 1; i < n; i++)

{

k = i * 4 + m;

c = 2 * a[k];

}

Tối ưu thành:
i = 1;
if (n > 1) {
	k = (n-1) * 4 + m;

	c = 2 * a[k];
	i = n;
}
b)

for (i = 0; i < n; i++)

{

if (y < x) a[i]++;

else a[i]--;

}

Tối ưu thành:

if (y < x) {
	for (i = 0; i < n; i++)
		a[i]++;
	{
} else {
	for (i = 0; i < n; i++)
		a[i]--;
	{
}

search loop unrolling nhé

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?