Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kod saya berfungsi sebanyak 3 kali tetapi saya tidak tahu mengapa saya tidak boleh melalui yang lain

Kod saya berfungsi sebanyak 3 kali tetapi saya tidak tahu mengapa saya tidak boleh melalui yang lain

WBOY
WBOYke hadapan
2024-02-09 11:45:08948semak imbas

Kod saya berfungsi sebanyak 3 kali tetapi saya tidak tahu mengapa saya tidak boleh melalui yang lain

editor php Youzi berada di sini untuk menjawab soalan anda tentang bilangan kali kod digunakan. Dari penerangan anda, nampaknya kod anda hanya boleh digunakan 3 kali, tetapi tidak boleh digunakan oleh kaedah lain. Masalah ini mungkin mempunyai beberapa punca, seperti sekatan lesen pada kod atau isu reka bentuk dengan kod itu sendiri. Untuk membantu anda menyelesaikan isu ini, kami mengesyorkan anda menyemak maklumat lesen untuk kod anda bagi memastikan anda mempunyai kebenaran undang-undang untuk menggunakannya. Pada masa yang sama, anda juga boleh menyemak reka bentuk dan pelaksanaan kod dengan teliti untuk melihat sama ada terdapat sebarang sekatan atau syarat yang menyebabkan had pada bilangan penggunaan. Jika masalah berterusan, kami mengesyorkan agar anda mendapatkan bantuan daripada pembangun kod atau sokongan teknikal yang berkaitan, yang mungkin dapat memberikan penyelesaian yang lebih khusus.

Kandungan soalan

Soalannya ialah: Little Code sedang bermain pengembaraan ais, permainan grid dengan n baris dan m lajur. Terdapat beberapa halangan yang tidak dapat diatasi pada beberapa grid, dan grid yang lain adalah ais licin.

Pemain membentuk pakatan pada grid yang boleh diakses dan kekal tidak bergerak. Dia kemudian akan mengikut watak itu semasa ia bergerak ke atas, ke bawah, ke kiri dan ke kanan apabila dia menahan watak itu untuk bergerak ke satu arah, watak itu akan meluncur di atas ais. Alam semula jadi telah meminta anda untuk bergerak ke atas di sini sehingga terdapat halangan dalam grid seterusnya ke arah pergerakan watak atau ia melebihi sempadan peta Kemudian permukaan akan terus menunggu langkah seterusnya Brother Xiaoyuan.

Sekarang memandangkan kedudukan semua halangan pada peta, kedudukan awal halaman kecil, dan urutan tindakan halaman kecil, sila cari lokasi akhir halaman kecil.

Ini kod saya

package main

import "fmt"
func yi(x,y int, s byte, a [][]int) (x1,y1 int){
    switch(s){
        
        case 'L':
            for{
                if y==0 || a[x][y-1]==1{
                    return x,y
                }
                y--

            }
        case 'R':
            for{
                if y==4 || a[x][y+1]==1{
                    return x,y
                }
                y++

            }
        case 'U':
            for{
                if x==0 || a[x-1][y]==1{
                    return x,y
                }
                x--

            }
        case 'D':
            for{
                if x==4 || a[x+1][y]==1{
                    return x,y
                }
                x++

            }

            
    }
    return x1,y1
}
func main() {

    var x,y,xc,yc,count int
    fmt.Scanf("%d %d",&x,&y)
    fmt.Scanf("%d %d",&xc,&yc)
    fmt.Scanf("%d",&count)
    // s:= make([]int,1,1)
    i:=count
        
    // }
    arr := make([][]int, x)
 for i := 0; i < x; i++ {
  arr[i] = make([]int, y)
 }
    // var arr [6][6]int
    for j:=0;j<i;j++{   
        var xt,yt int
        fmt.Scanf("%d %d",&xt,&yt)
        arr [xt-1][yt-1]=1
    }
    // for i:=0;i<x;i++{
    //     for j:=0;j<y;j++{
    //         fmt.Print(arr[i][j]," ")
    //     }
    //     fmt.Println()
    // }

    var kong string
    fmt.Scanf("%s",&kong)
    xf,yf:=xc-1,yc-1
    // xf,yf=yi(xf,yf,'R',arr)
    // fmt.Println(string(kong[7]))
    for i:=0; i<8; i++{
        xf,yf=yi(xf,yf,kong[i],arr)
        // fmt.Println(xf,yf)
        // func yi(x,y int, i int, s string, a *[5][5]int) (x1,y1 int){

    } 
    fmt.Println(xf+1,yf+1)

}

Saya cuba memikirkannya, tetapi saya perlu mengetahui apa masalahnya. Bolehkah anda membantu saya memikirkannya (saya tidak tahu penggunaan yang digunakan oleh profesor)

Penyelesaian

Jika saya faham dengan betul, saya rasa kod anda mungkin terlupa menggunakan varieti. Dalam kod yang anda tulis:

for i:=0; i<8; i++{
        xf,yf=yi(xf,yf,kong[i],arr)
        // fmt.println(xf,yf)
        // func yi(x,y int, i int, s string, a *[5][5]int) (x1,y1 int){

    }

Saya rasa 8 adalah subjektif const dan saya rasa ia perlu diubah. Inilah penyelesaian saya, harap ia membantu:

package main

import "fmt"
func yi(x,y int, s byte, a [][]int) (x1,y1 int){
    switch(s){
        
        case 'L':
            for{
                if y==0 || a[x][y-1]==1{
                    return x,y
                }
                y--

            }
        case 'R':
            for{
                if y==4 || a[x][y+1]==1{
                    return x,y
                }
                y++

            }
        case 'U':
            for{
                if x==0 || a[x-1][y]==1{
                    return x,y
                }
                x--

            }
        case 'D':
            for{
                if x==4 || a[x+1][y]==1{
                    return x,y
                }
                x++

            }

            
    }
    return x1,y1
}
func main() {

    var x,y,xc,yc,count int
    fmt.Scanf("%d %d",&x,&y)
    fmt.Scanf("%d %d",&xc,&yc)
    fmt.Scanf("%d",&count)
    // s:= make([]int,1,1)
    i:=count
        
    // }
    arr := make([][]int, x)
 for i := 0; i < x; i++ {
  arr[i] = make([]int, y)
 }
    // var arr [6][6]int
    for j:=0;j<i;j++{   
        var xt,yt int
        fmt.Scanf("%d %d",&xt,&yt)
        arr [xt-1][yt-1]=1
    }
    // for i:=0;i<x;i++{
    //     for j:=0;j<y;j++{
    //         fmt.Print(arr[i][j]," ")
    //     }
    //     fmt.Println()
    // }

    var kong string
    fmt.Scanf("%s",&kong)
    xf,yf:=xc-1,yc-1
    // xf,yf=yi(xf,yf,'R',arr)
    // fmt.Println(string(kong[7]))
    for i:=0; i<count; i++{
        xf,yf=yi(xf,yf,kong[i],arr)
        // fmt.Println(xf,yf)
        // func yi(x,y int, i int, s string, a *[5][5]int) (x1,y1 int){

    } 
    fmt.Println(xf+1,yf+1)

}

Atas ialah kandungan terperinci Kod saya berfungsi sebanyak 3 kali tetapi saya tidak tahu mengapa saya tidak boleh melalui yang lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam