• 【刷题记录】七月十九日


    【七月十九日】今天主要刷了搜索、回溯、DP方面的题目

    【任务分配】:题目

    #include<iostream>
    using namespace std;
    int n,sum=10004,job[12][12],ans;
    bool flag[12];
    void dfs(int x);
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&job[i][j]);}}
        dfs(1);
        printf("%d",sum);
    }
    void dfs(int x)
    {
        if(x==n+1){sum=min(sum,ans);return;}
        for(int i=1;i<=n;i++)
        {
            if(flag[i]) continue;
            ans+=job[x][i];
            flag[i]=true;
            if(ans<sum) dfs(x+1);
            flag[i]=false;
            ans-=job[x][i];
        }
    }
    代码

    【投票问题一】:题目

    #include<iostream>
    using namespace std;
    long long int m,n,f[101][101];
    void dp()
    {
        f[0][0]=f[1][0]=1;
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<=m;j++)
            {
                if(i>j) f[i][j]=f[i-1][j]+f[i][j-1];
            }
        }
        cout<<f[n][m];   
    }
    int main()
    {
        cin>>n>>m;
        dp();
        return 0;
    }
    代码

    【投票问题二】:题目

    #include<iostream>
    using namespace std;
    long long int m,n,f[101][101];
    void dp()
    {
        f[0][0]=f[1][0]=1;
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<=m;j++)
            {
                if(i>j) f[i][j]=f[i-1][j]+f[i][j-1];
            }
        }
        cout<<f[n][m];   
    }
    int main()
    {
        cin>>n>>m;
        dp();
        return 0;
    }
    代码

    【跳马问题一】:题目

    #include<iostream>
    #include<queue>
    using namespace std;
    queue<int>x;
    queue<int>y;
    int m,n,opx,opy,endx,endy;
    int f[110][110];  
    void bfs()
    {
        if(x.empty()||y.empty()) {puts("no");exit(0);}//如果队列是空的说明无法到达b点,所以输出no并退出程序 
        int x1=x.front();
        int y1=y.front();//记录头部 
        x.pop();//释放空间防止内存超限 
        y.pop();  
        if(x1==endx && y1==endy) {puts("yes");exit(0);}//判断是否到达B点 
        if(f[x1][y1]==0 && x1<n && x1>=0 && y1<m && y1>=0)  
        {
            f[x1][y1]=1;
            x.push(x1+2);
            y.push(y1-1);//向四个方向搜索 
            x.push(x1+2);
            y.push(y1+1);
            x.push(x1+1);
            y.push(y1+2);
            x.push(x1+1);
            y.push(y1-2);
        }
        bfs();//递归搜索 
    }
    int main()
    {
        cin>>n>>m>>opx>>opy>>endx>>endy;
        x.push(opx);
        y.push(opy);
        bfs();
        //system("pause");
        return 0;
    }
    代码

    【投票问题三】:题目

  • 相关阅读:
    移动Web框架:jQuery Mobile VS Sencha Touch
    2011最具争议性文章:中国网页设计为什么这么烂?
    如何学习嵌入式linux[转]
    嵌入式linux,老手给新手的建议
    开发菜鸟应该知道的十件事
    C#中二进制、八进制、十六进制和十进制之间的相互转化问题
    使用splitter控件 将界面分成可以调整宽度的三个部分
    Mutex 类
    Java 发邮件
    Java Servlet介绍 2
  • 原文地址:https://www.cnblogs.com/lijiaxin-blog-cpp/p/5687022.html
Copyright © 2020-2023  润新知