站外题求助
  • 板块学术版
  • 楼主_QrSn_
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/15 12:52
  • 上次更新2023/10/27 07:27:46
查看原帖
站外题求助
511253
_QrSn_楼主2022/10/15 12:52

题目:

 六一儿童节就要到了,晨晨的学校进行游园活动,其中一个游戏为填字游戏,规则为: 有一个 R 行 C 列的棋盘(2≤R,C≤25),棋盘上的每一个格子要么是空的,可以填一个十 进制数字;要么是堵上的,以字符“#” 表示(即不能填东西)。棋盘中从左往右连续的 数字排列可视为一个十进制整数。 现在给你一个已填好的棋盘,请你帮忙找出棋盘里面最小的整数。
输入
第一行:包括两个数,R 和 C(2≤R,C≤25),表示 R 行 C 列。 接着 R 行中每行包括 C 个字符,这些字符要么是数字,要么是“#”。输入数据保证存 在解,不存在前导 0 的情况(例如:01,002)。
输出
棋盘中最小的整数。
样例输入 Copy

3 6
3#5789
897#51
163#31

样例输出 Copy

3

提示

数据范围:

 对于 60%的数据,2≦R,C≦5;

 对于 80%的数据,2≦R,C≦18; 

对于 100%的数据,2≦R,C≦25;

代码:

#include<bits/stdc++.h>
using namespace std;
int r,c;
string a,s,sum="99999999999999999999999999"; 
int main() {
    cin>>r>>c;
    for(int i=0;i<r;i++)
    {
    	cin>>a;a+='#';
    	for(int i=0;i<a.size();i++)
    	{
    			if(a[i]!='#')s=s+a[i];
    			else 
    			{
    				//cout<<s<<" "<<s.size()<<" "<<sum<<" "<<sum.size()<<endl;
    				if(s.size()<sum.size()&&s>="1" || s.size()==sum.size()&&s<sum&&s>="0")sum=s;
    				s="";
				    //cout<<s<<" "<<s.size()<<" "<<sum<<" "<<sum.size()<<endl;
				}
		}
    }
    cout<<sum;
	return 0;
}

WA91,还有什么点我没有想到吗

2022/10/15 12:52
加载中...