MIPS彙編 最大子串行和

2021-08-11 01:50:20 字數 1336 閱讀 2593

給定乙個整數序列,a0, a1, a2, …… , an(項可以為負數),求其中最大的子串行和。如果所有整數都是負數,那麼最大子串行和為0

以下是o(n)的演算法

#include#define max 1050

int main()

if(max<0)

max=0;

printf("%d",max);

} mips彙編

.data

array:.space 4000

.text

li $v0,5

syscall

move $s0,$v0 #use $s0 as n

li $t0 ,0

forinput:

slt $t1,$t0,$s0

beq $t1,$0,endinput

sll $t1,$t0,2

li $v0,5

syscall

sw $v0,0($t1)

addi $t0,$t0,1

j forinput

endinput:

li $t0,0

sll $t1,$t0,2

lw $t1,0($t1)

move $s1,$0# maxbefore=0;

move $s2,$t1 #maxhere=a[0];

move $s3,$t1

for:

slt $t1,$t0,$s0

beq $t1,$0,endfor

slt $t1,$s1,$0

beq $t1,$0,else

sll $t1,$t0,2

lw $t1,0($t1)

move $s2,$t1

else:

sll $t1,$t0,2

lw $t1,0($t1)

add $s2,$s1,$t1

slt $t1,$s2,$s3

beq $t1,$0,change

addi $t0,$t0,1

move $s1,$s2

j for

change:

move $s3,$s2

addi $t0,$t0,1

move $s1,$s2

j for

endfor:

slt $t1,$0,$s3

beq $t1,$0,print

move $a0,$s3

li $v0,1

syscall

print:

li $a0,0

li $v0,1

syscall

和最大子串行

問題描述 第一行輸入乙個正整數n 1 n 100001 第二行輸入n個整數a 0 a 10000 求該組整數子串行最大的和。解決這個問題應該考慮輸入n較大的情況,也就是說,輸入100000個數字判斷它的和最大子串行應當也能很快地算出來。我看過很多求解的 有三重for迴圈的,有兩重for迴圈的,也有使...

最大子串行和

最大子串行是要找出由數組成的一維陣列中和最大的連續子串行。比如的最大子串行就是 它的和是8,達到最大 而 的最大子串行是,它的和是6。找最大子串行的方法很簡單,只要前i項的和還沒有小於0那麼子串行就一直向後擴充套件,否則丟棄之前的子串行開始新的子串行,同時我們要記下各個子串行的和,最後找到和最大的子...

和最大子串行

時間限制 1 sec 記憶體限制 512 mb 提交 3 解決 3 提交 狀態 討論版 對於乙個給定的長度為n的整數序列a,它的 子串行 的定義是 a中非空的一段連續的元素 整數 你要完成的任務是,在所有可能的子串行中,找到乙個子串行,該子串行中所有元素的和是最大的 跟其他所有子串行相比 程式要求你...