7/22上午


1212LETTERS

http://ybt.ssoier.cn:8088/problem_show.php?pid=1212

复制代码
#include<bits/stdc++.h>
using namespace std;

int maxs=0;
bool a[25][25],b[10005];
char c[25][25];
int R,S;
int x[4]={1,0,-1,0};
int y[4]={0,1,0,-1};

void dfs(int m,int n,int s){
    if(s>maxs){
        maxs=s;
    }
    for(int i=0; i<=3; i++){ 
        int nx=x[i]+m;
        int ny=y[i]+n;
        if(nx<=R && ny<=S && nx>=1 && ny>=1){
            if(b[c[nx][ny]]==false && a[nx][ny]==false){
                b[c[nx][ny]]=true;
                a[nx][ny]=true; 
                dfs(nx,ny,s+1);
                b[c[nx][ny]]=false;
                a[nx][ny]=false;
               }
            
        }
    }
}

int main(){
    cin>>R>>S;
    for(int i=1; i<=R; i++){
        for(int j=1; j<=S; j++){
            cin>>c[i][j];
        }
    }
    b[c[1][1]]=1;
    dfs(1,1,1);
    cout<<maxs<<endl;
    return 0;
}
复制代码

 

1258数字金字塔

 http://ybt.ssoier.cn:8088/problem_show.php?pid=1258

递归+记忆化(满分法):

复制代码
#include<bits/stdc++.h>
using namespace std;

int R;
int a[1005][1005];
int s[1005][1005];

int f(int m,int n){
    if(m==R){
        return a[m][n];
    }else {
        if(s[m][n]==0){
            s[m][n]=max(f(m+1,n),f(m+1,n+1));
        }
        return a[m][n]+s[m][n];
    }
}

int main(){
    cin>>R;
    for(int i=1; i<=R; i++){
        for(int j=1; j<=i; j++){
            cin>>a[i][j];
        }
    }
    cout<<f(1,1)<<endl; 
    return 0;
}
复制代码

 1215 迷宫 

http://ybt.ssoier.cn:8088/problem_show.php?pid=1215

复制代码
#include<bits/stdc++.h>
using namespace std;

int k,h;
char c[105][105];
bool ans=false;
int x[4]={1,0,-1,0};
int y[4]={0,-1,0,1};
int ax,ay,bx,by,nx,ny;
bool b[1005][1005];

void dfp(int x1,int y1){
    if(ans){
        return ;
    }
    
    for(int i=0; i<=3; i++){
        nx=x[i]+x1;
        ny=y[i]+y1;
        if(c[nx][ny]=='.' && nx>=0 && nx<h && ny>=0 && ny<h && b[nx][ny]==false){
            if(nx==bx && ny==by){
                ans=true;
            }
            b[nx][ny]=true;
            dfp(nx,ny);
            b[nx][ny]=false;
        }
    }
}
 
int main(){
    cin>>k;
    for(int i=0; i<k; i++){
        cin>>h;
        for(int j=0; j<h; j++){
            for(int z=0; z<h; z++){
                cin>>c[j][z];
            }
        }
        cin>>ax>>ay>>bx>>by;
        dfp(ax,ay);
        if(ans==false){
            cout<<"NO"<<endl;
        }else cout<<"YES"<<endl;
        ans=false;
        memset(b,0,sizeof(b));//要记得清空!!! 
    }
    return 0;
}
复制代码

 

1213八皇后问题 (未完成)

http://ybt.ssoier.cn:8088/problem_show.php?pid=1213

 

复制代码
#include<bits/stdc++.h>
using namespace std;

int a[10][10],s=0;
bool b[1000], c[1000],d[1000],e[1000];

void output(){
    cout<<"NO. "<<s<<endl;
    for(int i=1; i<=8; i++){
        for(int j=1; j<=8; j++){
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
}

void dfs(int m){
    for(int j=1; j<=8; j++){
        if(b[j]==false && c[m+j]==false && d[m-j+7]==false){
            a[m][j]=1;
            b[j]=true;
            c[m+j]=true;
            d[m-j+7]=true;
            if(m==8){
                    s++;
                    output();
                    memset(a,0,sizeof(a));
            }else {
                dfs(m+1);
            }
            b[j]=false;
            c[m+j]=false;
            d[m-j+7]=false;
        }
    }
}



int main(){
    dfs(1); 
    return 0;
}
复制代码

 

posted @   竹余居居居居居  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示