求管理员别封!

这段时间里有很多新人加入,所以有很多新问问题的帖,但是,你们不发题目让我们怎么解决?
所以
请把题面也发出来,要不然我们很难帮你啊!!!!

10 个赞

6. 被幸福包裹的数

XJOI - 题目ID:9433必做题50分

最新提交:0 分

历史最高:0 分

时间限制: 1000ms

空间限制: 524288kB

题目描述

传说数字1代表幸福,请找出矩阵种被幸福包裹的数,并把它设置为2.

输入格式

每组测试数据第一行一个整数n(1≤n≤30)
接下来n行,由0和1组成的n×n的方阵。
方阵内只有一个闭合圈,圈内至少有一个0。

输出格式

已经填好数字2的完整方阵。

样例

Input 1

6 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1

Output 1

0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 2 2 1 1 1 2 2 2 1 1 2 2 2 2 1 1 1 1 1 1 1

Input 2

5 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1

Output 2

1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1

样例解释

测试样例1解释:
这是一组方阵,圈内的1表示被幸福包裹的数,根据题目要求,将这些幸福的数设置为2,然后返回结果。

测试样例2解释:
这是一组方阵,所有的数都被幸福包裹,所以将所有的数设置为2,然后返回结果。
会吗

7 个赞

你的思路呢

6 个赞

#include
#include
#include
using namespace std;
int a[505][505],n,m,r,ma;
int dx[4]= {0,0,-1,1};
int dy[4]= {-1,1,0,0};
struct node {
int x,y;
};
int bfs(int x,int y) {
queue que;
que.push({x,y});
a[y]=2;
while(!que.empty()) {
node p=que.front();
que.pop();
for(int i=0; i<4; i++) {
int xx=p.x+dx[i],yy=p.y+dy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&a[xx][yy]==0) {
que.push({xx,yy});
a[xx][yy]=2;
}
}
}
return 0;
}
int main() {
cin>>n;
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
cin>>a[i][j];
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
if(a[i][j]==0&&(i==1||i==n||j==1||j==n)) {
bfs(i,j);
}
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
if(a[i][j]==2) {
cout<<0<<" “;
} else if(a[i][j]==0) {
cout<<2<<” “;
} else {
cout<<1<<” ";
}
}
cout<<endl;
}
}

7 个赞

谢了

6 个赞

给个解决方案呗

6 个赞

qp

7 个赞

2. 最小转弯路径

XJOI - 题目ID:8121必做题50分

最新提交:0 分

历史最高:0 分

时间限制: 100ms

空间限制: 131072kB

题目描述

时间限制:0. 1s 空间限制:128 M

题目描述:

给出一个地图,求起点到终点的最少转弯次数,如果没有可行路径,则输出 -1。
有谁会

6 个赞

直接dfs爆搜啊,如果与当前方向不同即为转弯,cnt++,最后输出cnt即可

6 个赞

???

6 个赞

你这基础算法几的题?
我似乎做过

2 个赞