POJ-2030-The Secret Number

来源:互联网 发布:martha stewart 知乎 编辑:程序博客网 时间:2024/06/04 19:34

其实题目并不难,只是处理的时候用STL的string容易一些,唉,很久没做这类题了~

代码:

#include<cstdio>#include<cstring>#include<string>#include<iostream>using namespace std;const int maxn=71;int n,m;char map[maxn][maxn];string num[maxn][maxn],ans;bool cmp(string &s1,string &s2){    int lena=s1.length();    int lenb=s2.length();    if(lena>lenb)return true;    if(lena<lenb)return false;    return s1>=s2;}void Delete(string &str){    while(str[0]=='0'&&str.length()>0)str=str.substr(1,str.length()-1);}int main(){    while(scanf("%d%d",&n,&m)&&(n+m))    {ans="0";for(int i=0;i<m;i++)    scanf("%s",map[i]);for(int i=0;i<m;i++)    for(int j=0;j<n;j++)    {if(map[i][j]>='0'&&map[i][j]<='9'){    num[i][j]=map[i][j];    if(j>0&&(i==0||cmp(num[i][j-1],num[i-1][j])))num[i][j]=num[i][j-1]+map[i][j];    else if(i>0&&(j==0||cmp(num[i-1][j],num[i][j-1])))num[i][j]=num[i-1][j]+map[i][j];}else    num[i][j]="0";Delete(num[i][j]);if(cmp(num[i][j],ans))    ans=num[i][j];    }cout<<ans<<endl;    }    return 0;}