迷宫
https://www.luogu.com.cn/problem/P1605

#include <bits/stdc++.h>
using namespace std;
const int N=10;
int g[N][N],v[N][N],sx,sy,gx,gy,d[N][N],ans,zz[N][N];
int n,m,t;
int dx[4]={0,0,-1,1},dy[4]={1,-1,0,0};
void walk(int x,int y){
    if(x==gx&&y==gy){
        ans++;
        return;
    }
    else{
        for(int k=0;k<4;k++){
            int nx=x+dx[k];
            int ny=y+dy[k];
            if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&!v[nx][ny]&&!zz[nx][ny]){
                v[x][y]=1;
                walk(nx,ny);
                v[x][y]=0;
            }
        }
    }
}
int main(){
    cin>>n>>m>>t;
    cin>>sx>>sy>>gx>>gy;
    for(int p=0;p<t;p++){
        int i,j;
        cin>>i>>j;
        zz[i][j]=1;
    }
    walk(sx,sy);
    cout<<ans;
    return 0;
}

填涂颜色
https://www.luogu.com.cn/problem/P1162

#include <bits/stdc++.h>
using namespace std;
const int N=50;
int n;
int g[N][N],col[N][N];
int dx[4]={0,0,-1,1},dy[4]={1,-1,0,0};
void dfs(int x,int y){
    if(x<0|x>n+1||y<0||y>n+1||col[x][y]) return;
    col[x][y]=1;
    for(int k=0;k<4;k++)dfs(x+dx[k],y+dy[k]);
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>g[i][j];
            if(g[i][j]==0) col[i][j]=0;
            else col[i][j]=2;
        }
    }
    dfs(0,0);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(col[i][j]==0) cout<<2<<" ";
            else cout<<g[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

[USACO10OCT]Lake Counting S
https://www.luogu.com.cn/problem/P1596

#include <bits/stdc++.h>
using namespace std;
const int N=150;
int n,m,cnt;
int dx[8]={0,1,1,1,0,-1,-1,-1},dy[8]={1,1,0,-1,-1,-1,0,1};
char g[N][N];
void dfs(int x,int y){
    if(g[x][y]=='W') g[x][y]='.';
    for(int k=0;k<8;k++){
        int nx=x+dx[k];
        int ny=y+dy[k];
        if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&g[nx][ny]=='W')dfs(nx,ny);
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>g[i][j];
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(g[i][j]=='W'){
                dfs(i,j);
                cnt++;
            }
        }
    }
    cout<<cnt;
    return 0;
}

[COCI2008-2009#2] PERKET
https://www.luogu.com.cn/problem/P2036

#include <bits/stdc++.h>
using namespace std;
const int N=15;
int a[N],b[N],ans=0x7f7f7f,n;
void dfs(int now,int s,int t){
    if(now>n){
        if(s==1&&t==0) return;
        else{
            ans=min(ans,abs(s-t));
            return;
        }
    }
    dfs(now+1,s*a[now],t+b[now]);
    dfs(now+1,s,t);
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i]>>b[i];
    }
    dfs(1,1,0);
    cout<<ans;
    return 0;
}

[USACO08FEB]Meteor Shower S
https://www.luogu.com.cn/problem/P2895

#include <bits/stdc++.h>
using namespace std;
int c[310][310];//有没有被访问
int t[310][310];//流星造访的最早时间
int m;
int dx[4]={0,0,-1,1},dy[4]={1,-1,0,0};
struct place{
    int x,y,time;
}p;
int main(){
    cin>>m;
    for(int i=0;i<=305;i++){
        for(int j=0;j<=305;j++)
            t[i][j]=-1;
    }
    for(int i=1;i<=m;i++){
        int x,y,ti;
        cin>>x>>y>>ti;
        if(ti<t[x][y]||t[x][y]==-1) t[x][y]=ti;
        for(int k=0;k<4;k++){
            int nx=x+dx[k];
            int ny=y+dy[k];
            if(nx>=0&&ny>=0&&(t[nx][ny]==-1||ti<t[nx][ny]))t[nx][ny]=ti;
        }
    }
    queue<place> q;
    p.x=0,p.y=0,p.time=0;
    c[0][0]=1;
    q.push(p);
    while(q.size()){
        place now=q.front();
    //    cout<<now.x<<" "<<now.y<<" "<<now.time<<endl;
        q.pop();
        for(int k=0;k<4;k++){
            int nx=now.x+dx[k];
            int ny=now.y+dy[k];
            if(nx>=0&&ny>=0&&!(c[nx][ny])&&(t[nx][ny]==-1||now.time+1<t[nx][ny])){
                if(t[nx][ny]==-1)
                {
                    cout<<now.time+1<<endl;
                    return 0;
                }
                place New;
                New.x=nx;
                New.y=ny;
                New.time=now.time+1;
                c[nx][ny]=1;
                q.push(New);
            }
        }
    }
    cout<<-1<<endl;
    return 0;
}