一周的总结

Posted 五菱宏光车神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一周的总结相关的知识,希望对你有一定的参考价值。

一周的总结
1.学习结构体中的大小比较

来源:
acw中的奖学金的题目
目的:判断整体的排列
1.按总分
2.按语文
3.按学号

bool operator <(const node &a) const
    

例子:


```cpp
struct student

    int id,sum,a,b,c;
    bool operator <(const node &t)const
    
        if(sum!= t.sum)
            return sum>t.sum;
        if(a != t.a)
            return a>t.a;
        if(id != t.id)
            return id<t.id;
    
q[N];

2.dfs和bfs的问题;
1.什么是dfs;
深度优先;
2.什么是bfs;
广度优先;
/自己的实力还没有如此的厉害;
于是就先学的dfs;
也不是特别懂日后在补写一些;
/

dfs的例题
1.oj上的
海洋问题
2.acm上的
棋盘的问题
、、其实我觉得叫N皇后更好,因为是八皇后的升级版。

先解八皇,问就是才做过一次。


```cpp
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n,sum;
const int N = 15;
bool col[N], dg[N * 2], udg[N * 2];
int path[N],ans;
void dfs(int x)

    if (x>n)
    
        ans++;
        if(ans<=3)
        
            for(int i=1; i<=n; i++)
                cout<<path[i]<<" ";
            cout<<endl;
        
        return;
    
    for (int y = 1; y <= n; y ++)//开始放 
        if(!col[y] && !dg[x + y] && !udg[x - y + n])//判断他的列,他的该点对应的列、左斜对角线、右斜对角线都没有棋子,则可以放。
        
            path[x] = y;
            col[y] = dg[x + y] = udg[x - y + n] = true;//对应的列、左斜对角线、右斜对角线就棋子了
            dfs(x + 1);
            col[y] = dg[x + y] = udg[x - y + n] = false;//状态回滚
            path[x] = 0;
        

int main()

    cin>>n;
    dfs(1);
    cout<<ans;
    return 0;

2.海洋问题

#include<bits/stdc++.h>
using namespace std;

int n;
char a[1010][1010]; //地图
int vis[1010][1010]=0;  //标记是否搜过
int d[4][2] = 0,1, 0,-1, 1,0, -1,0; //四个方向
int flag;  //用于标记这个岛中是否被完全淹没
void dfs(int x, int y)
    vis[x][y] = 1;      //标记这个'#'被搜过。注意为什么可以放在这里
    if(a[x][y+1]=='#' && a[x][y-1]=='#' && a[x+1][y]=='#' && a[x-1][y]=='#')
        flag = 1;       //上下左右都是陆地,不会淹没
    for(int i = 0; i < 4; i++) //继续DFS周围的陆地
        int nx = x + d[i][0], ny = y + d[i][1];
      //if(nx>=1 && nx<=n && ny>=1 && ny<=n && vis[nx][ny]==0 && a[nx][ny]=='#') //题目说边上都是水,所以不用这么写了
        if(vis[nx][ny]==0 && a[nx][ny]=='#') //继续DFS未搜过的陆地,目的是标记它们
            dfs(nx,ny);
    


int main()
    cin >> n;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
            cin >> a[i][j];
    int ans = 0 ;
    for(int i = 1; i <= n; i++)  //DFS所有像素点
        for(int j = 1; j <= n; j++)
            if(a[i][j]=='#' && vis[i][j]==0)
                flag = 0;
                dfs(i,j);
                if(flag == 0)  //这个岛全部被淹
                    ans++;     //统计岛的数量
            
    cout<<ans<<endl;
    return 0;

还未完全理解海洋的问题,日后回来补;

以上是关于一周的总结的主要内容,如果未能解决你的问题,请参考以下文章

一周的学习总结

第三周总结及接下来一周的计划

<工作一周的心情总结>

源码安装mysql-5.7.13一周的冤枉路总结。满满的都是泪啊

1.7-1.14周报,关于一周的学习总结

最后一周总结