今天有点水,明天继续刷题(水)呀

有关今天写的题目,和明天

~~今天写的题目不多
1.
主要是是因为HHUOJ,下班太早了 (偷懒)

2.
这是错误的DFS代码

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

int n,m,sx,sy,ans,T;
bool vis[10][10]={0};
char dt[10][10];
bool to_go(ss,int n,int m){

}
int dir[4][2]={{0,1},{1,0},{0,-1},{0,1}};

void bfs(int x,int y){
	int tx,ty;
	for(int k=0;k<4;k++){
		tx=x+dir[k][0];
		ty=y+dir[k][1];
		
		if(to_go(tx,ty,n,m)){
			ans++;
			printf("%d %d %d\n",tx,ty,ans);
			vis[tx][ty]=1;
			dfs(tx,ty);
			
		}
		vis[tx][ty]=0;
	}
	return ;
}

int main(){
	while(~scanf("%d%d",&n,&m)){
	for(int i=0;i<m;i++){
		scanf("%s",dt[i]);
	}
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			if(dt[i][j]=='@'){
				sx=i;
				sy=j;
			}
		}
	}	
		
		dfs(sx,sy);
		printf("%d\n",ans);
		memset(vis,0,sizeof(vis));
	}
	return 0;
}

这是正确的


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

struct State{//搜索.
	   int x,y;
	   int step;
}state[420];
int n,m,ans=1;
bool vis[25][25]={0};
char dt[25][25];
bool to_go(State s,int n,int m){
	if(s.x>=1&&s.x<=m&&s.y>0&&s.y<=n&&vis[s.x][s.y]==0&&(dt[s.x][s.y]=='.'||dt[s.x][s.y]=='@')) 
	return 1;
	else 
	return 0;
}
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};

int bfs(State st){
	queue<State>q;
	State next,now;
	q.push(st);
	vis[st.x][st.y]=1;
	while(!q.empty()){
	now=q.front();
//	printf("当前搜索的点(%d,%d) %c %d\n",now.x,now.y,dt[now.x][now.y],ans);
	for(int k=0;k<4;k++){
	next.x=now.x+dir[k][0];
	next.y=now.y+dir[k][1];	
	if(to_go(next,n,m)){
		ans++;
		q.push(next);
		vis[next.x][next.y]=1;
//		printf("被放入队列的点(%d,%d) %c %d\n",next.x,next.y,dt[next.x][next.y],ans);
		}
	}
//	puts(""); 
		q.pop();
	}
	return ans;
}
int main(){
	while(~scanf("%d%d",&n,&m),n+m){
		State St;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			//scanf("%c",&x);//printf("%c",x);
			cin>>dt[i][j];
		if(dt[i][j]=='@'){
			St.x=i;
			St.y=j;
	//		cout<<"找到了起点"<<endl; 
	//		cout<<i<<" "<<j<<endl;
			}
		}
	}
		
		
		printf("%d\n",bfs(St));
		ans=1;
		memset(vis,0,sizeof(vis));
	}
	return 0;
}

今天写了一题搜索,写了挺久的,前期写dfs,后来发现dfs不可做.
HHUOJ 红与黑,出看题目以为是红黑树??见识浅陋(逃
dfs,标记取消后,居然不往,下一个方向测试,有点明明奇妙
意外暴露DFS不熟,明天再写写相关的题目.
还有个问题就是,是为写地图类型的搜索,查找之类的无从下手.
万物皆可搜索? (直接洛)

3.
明天写搜索的题目,再看看dp相关的.(仅限于看看吧,dp好难啊).
PS:图论也好难.
PS*2: 树…

4.
第二次MarkDown,感觉还是不好用啊.

方法说明颜色名称颜色
此处实现方法利用 CSDN-markdown 内嵌 html 语言的优势Hotpinkrgb(240, 248, 255)
借助 table, tr, td 等表格标签的 bgcolor 属性实现背景色设置AntiqueWhitergb(255, 192, 203)
贴一段markdown语法

我是黑体字
我是微软雅黑
我是华文彩云
我是红色
我是绿色
我是蓝色
我是尺寸
我是黑体,绿色,尺寸为5

																										2019-2-10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值