实验二

来源:互联网 发布:4g 网络手机 编辑:程序博客网 时间:2024/06/05 09:05

1.

#include<bits/stdc++.h>

using namespace std;
int main()
{
    int n,a;
    queue<int> q;
    stack<int> s;
    scanf("%d",&n);
    for(int i = 0; i < n; i++)
    {
        scanf("%d",&a);
        q.push(a);
    }
    while(!q.empty())
    {
        s.push(q.front());
        q.pop();
    }
    while(!s.empty())
    {
        q.push(s.top());
        s.pop();
    }
    while(!q.empty())
    {
        printf("%d ",q.front());
        q.pop();
    }
    return 0;

}

3.

//dfs
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1000;
char mp[maxn][maxn];//1代表有障碍,S为起点,E为终点
bool vis[maxn][maxn];//1表示已被访问
int n,m;
int flag;
bool judge(int x, int y)
{
    if(x>0 && x<=n && y>0 && y<=m && !vis[x][y] && mp[x][y] != '1')
        return true;
    return false;
}
void dfs(int x, int y)
{
    if(mp[x][y] == 'E')
    {
        flag = 1;
        return ;
    }
    vis[x][y] = 1;
    for(int i = -1; i <= 1; i++)
        for(int j = -1; j <= 1; j++)
    {
        int x1 = x + i;
        int y1 = y + j;
        if(judge(x1,y1))
            dfs(x1,y1);
    }
}
int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        memset(vis,0,sizeof(vis));
        flag = 0;
        int posx,posy;
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= m; j++)
            {
                cin>>mp[i][j];
                if(mp[i][j] == 'S')
                {
                    posx = i;
                    posy = j;
                }
            }
        dfs(posx,posy);
        if(flag)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}

原创粉丝点击