uva657 persentation error的看过来!

题目要求根据给定的图形,统计非标准形状骰子的点数,相邻的'X'代表一点。解题思路采用两次深度优先搜索(DFS),第一次找'*',第二次找相邻的'X'。难点在于理解问题本质和正确使用优先级队列,确保输出点数从小到大排列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目大意:

中文翻译就不给了,英文不难能读懂。题目大意是给出一幅图画,统计上面每个色子的点数,‘*’表示色子的区域,注意并不一定是标准形状,相邻的‘X’表示一个点数,每个色子的点数从1-6.最后要从小到大地输出各个色子的点数。

读完题感觉这和前一篇日志里的油田问题差不多,仔细想想发现其实就是两次dfs,第一层dfs是深搜找‘*’,第二层dfs是找到‘X’后深搜找相邻的‘X’,所以整体难度不大。

通过这道题注意两个地方:

1、优先级队列的使用,默认是从大到小的优先顺序,如果要如题意要求从小到大必须如下声明

priority_queue<int,vector<int>,greater<int> > que;		//优先级队列默认是从大到小排的,只有这么写才是从小到大

2、输出格式要注意,如果你是presentation error,看看是不是这两点没有注意到:(1)最后一个数后面不能有空格(2)一个用例后要打印一空格行。

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;

char grid[55][55];
bool visit[55][55];
int w,h;
void searcharound(int x,int y)			//找到一个‘X’后遍历周围所有的‘X’
{
	if (x-1>=0&&grid[x-1][y]=='X'&&!visit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值