NOIP2017棋盘 5分代码找茬
  • 板块学术版
  • 楼主zzh2007
  • 当前回复4
  • 已保存回复4
  • 发布时间2020/10/2 22:18
  • 上次更新2023/11/5 12:12:14
查看原帖
NOIP2017棋盘 5分代码找茬
385966
zzh2007楼主2020/10/2 22:18
#include<bits/stdc++.h>
using namespace std;
int n, m, i, j, k, ans=1e9, mp[1005][1005], f[1005][1005];
int dx[]={-1, 0, 1, 0}; 
int dy[]={0, -1, 0, 1};
void dfs(int x, int y, int s, int flag){
	int i, xx, yy;
	if(x<1||y<1||x>n||y>n) return;
	if(x==n&&y==n){
		if(s<ans) ans=s;
		return;
	}
	for(i=0; i<4; i++){
		xx=x+dx[i], yy=y+dy[i];
		if(mp[xx][yy]){
			if(mp[xx][yy]==mp[x][y]){
				dfs(xx, yy, s, 0);
			}
			else{
				dfs(xx, yy, s+1, 0);
			}
		}
		else{
			if(flag==0){
				mp[xx][yy]=mp[x][y];
				dfs(xx, yy, s+2, 1);
				mp[xx][yy]=0;
			}
		}
	}
} 
int main(){
	int a, b, c;
	memset(f, 9, sizeof(f));
	scanf("%d%d", &n, &m);
	for(i=1; i<=m; i++){
		scanf("%d%d%d", &a, &b, &c);
		mp[a][b]=c+1;
        //黄2 红1 无色0 
	}
	dfs(1, 1, 0, 0);
    //x坐标,y坐标,步数,是否用过魔法
	if(ans!=1e9) printf("%d", ans);
	else printf("-1");
	return 0;
}

MLE了,麻烦各位dalao帮忙找出错误,谢谢

2020/10/2 22:18
加载中...