栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

深度优先搜索(基于mips汇编语言)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深度优先搜索(基于mips汇编语言)

一.全排列问题

全排列问题 - 洛谷

题目要求如上

c语言代码如下:

mips汇编代码实现:

 

.data 
    symble:.space 32
    array:.space 32
    ar_sp:.asciiz" "
    ar_en:.asciiz "n"
.text
    li $v0,5
    syscall
    move $s0,$v0
    li $s1,0        #index=s0
    jal fullarray
    li $v0,10
    syscall
    
fullarray:
    li $s2,0                        #i=0
    blt $s1,$s0,else
for1:
    beq $s0,$s2,end_for1
    sll $t1,$s2,2
    lw $a0,array($t1)
    li $v0,1
    syscall
    la $a0,ar_sp
    li $v0,4
    syscall
    addi $s2,$s2,1
    j for1
end_for1:
    la $a0,ar_en
    li $v0,4
    syscall
    jr $ra

else:
    beq $s0,$s2,end_else
    sll $s3,$s2,2    
    lw $t0,symble($s3)            #t0=symble[i] s3=4*i
    bgtz $t0,end_if
    addi $s4,$s2,1
    sll $s5,$s1,2    
    sw $s4,array($s5)               #i+1=symble[index],s5=4*index
    li $t1,1
    sw $t1,symble($s3)
    
    addi $sp,$sp,-12
    sw $ra,0($sp)
    sw $s1,4($sp)
    sw $s2,8($sp)
    
    addi $s1,$s1,1
    jal fullarray
    
    lw $ra,0($sp)
    lw $s1,4($sp)
    lw $s2,8($sp)
    addi $sp,$sp,12
    
    sll $s3,$s2,2
    sw $0,symble($s3)
end_if:
    addi $s2,$s2,1
    j else
end_else:
    jr $ra
    

二.将n分解成不多余m个数的和

DFS(搜索) - OI Wiki

c++语言代码如下:

mips汇编代码如下:

.data 
    array:.space 400
    arr_sp:.asciiz " "
    arr_en:.asciiz "n"
.text
    li $v0,5
    syscall
    move $s0,$v0 #s0=n
    li $v0,5
    syscall
    move $a1,$v0 #a1=m=n
    li $s1,1 #i=s1
    li $s2,1 #a=s2
    jal dfs
    li $v0,10
    syscall
    
dfs:
    bgt $s0,$0,else_dfs
    li $t0,1
for1_begin:
    beq $t0,$s1,for1_end
    sll $t3,$t0,2
    lw $a0,array($t3)
    li $v0,1
    syscall
    la $a0,arr_sp
    li $v0,4
    syscall
    addi $t0,$t0,1
    j for1_begin
for1_end:
    la $a0,arr_en
    li $v0,4
    syscall
else_dfs:
    bgt $s1,$a1,end_dfs
    move $t0,$s2    
for2_begin:
    bgt $t0,$s0,end_dfs
    sll $t3,$s1,2
    move $t5,$t0
    sw $t5,array($t3)
    addi $sp,$sp,-20
    sw $ra,0($sp)
    sw $s0,4($sp)#n
    sw $s1,8($sp)#i
    sw $s2,12($sp)#a
    sw $t0,16($sp) #j
    sub $s0,$s0,$t0
    addi $s1,$s1,1
    move $s2,$t0
    jal dfs
    lw $ra,0($sp)
    lw $s0,4($sp)#n
    lw $s1,8($sp)#i
    lw $s2,12($sp)#a
    lw $t0,16($sp) 
    addi $sp,$sp,20
    addi $t0,$t0,1
    j for2_begin
end_dfs:
    jr $ra
 


    
    
    
    
    
    

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433523.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号