HUST - 1016幼稚園の子供のパズル(水問題)

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/qq_45458915/article/details/102718184

幼稚園の子供たちが問題を研究してきた - 長文で(負の数はありません)最大の非負の整数を見つける方法。残念ながら、あなたがそれらを遅らせている、と非常に残念なことに、彼らはこのタスクを実行するために呼ばれて、あなたはこのような単純な疑問は、単にあなたの知性に対する侮辱だと思うので、あなたは!非常に悪い気分を持っているので、あなたはそれを行うためのプログラムを書くことにしました。

エントリー

入力データの複数のセット。各入力文(スペースを含むことができる、数字を含める必要があります)、行当たり256未満の長さ

輸出

出力は、複数の行に負でない整数の見つかった最大出力の各行に対応します

サンプル入力 

&& 12345aBsdDkjie64skjd5lk
3 * 2 && 0 %%% 00B58CD000000b
a000b0000000c000

サンプル出力 

12345
58
0

効果の対象:多くの文字列が与えられている、最大の非負の整数が、各列に表示される尋ねるはどのくらいです

トピック分析:水の問題は、質問のブラシCouchu数にされている可能性があり、結果は、ブラインドに関連する少しの知識を、この問題が発生し、プラススタートは本当にこの質問はまだ少し後にあることを確認するために、より適切な達成する方法がわかりません収穫、それについての記録でブログを書く(私はあまりにも多くの水を有することができます。)

あなたは事前に知識を知っている必要がまず第一には、getlineの関数の戻り値であり、そして、それが原因で文字列クラスがあれば、輸送中に発生した循環に入るなり、whileループの外にジャンプすることができ、同様の機能、それがEOFになると、無効な入力の戻り値を取得しますgetlineの持つ唯一の行全体を読みたい、以前に同様の問題が発生しないので、それは少しの知識を追加すること

また、どのように比較文字列のデジタルサイズがそれに表示されている、私は考えるように始め比較し、デジタルとに変換する関数を記述することですが、一瞬考えて、文字列は最大256のために与えられていることがわかった、連続しましたでもLONGLONG、長時間デジタル少しフックをオフに鳴っている、それは短い長さの長い長さよりも確かに良く、私たちが直接連続番号の長さを比較することができますことを、知っているタイトルの後にソリューションを読み取るために、オンラインで行く、確かに現実的ではありません大規模な、そこにすべての桁がまあ、同じ長さの場合は、直接文字列クラスの大きさを比較することによって決定することができる後に、文字列クラスのために辞書式順序に基づいて、文字を比較するためのコンパレータを前後から、だけでなく、ちょうど満たすために対象要件ので、私たちは直接、答えは「0」に初期化Mmaxのを覚えて、それがゼロ以外のデジタルになると状況は0をリード避けることができるように、再び録音を開始、そんなに多くすべき文字列クラスを格納することができます、単純な実装のように見えます

コード:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream> 
#include<deque>
#include<unordered_map>
#define Pi acos(-1.0)
using namespace std;

typedef long long LL;

const int inf=0x3f3f3f3f;

const int N=1e4+100;

int main()
{
//  freopen("input.txt","r",stdin);
	string s;
	while(getline(cin,s))
	{
		string mmax="0";
		for(int i=0;i<s.size();i++)
		{
			if(isdigit(s[i])&&s[i]!='0')
			{
				string temp;
				while(isdigit(s[i]))
				{
					temp+=s[i++];
				}
				if(temp.size()>mmax.size()||(temp.size()==mmax.size()&&temp>mmax))
					mmax=temp;
			}
		}
		cout<<mmax<<endl;
	}
    
    
    
    
    
    
    
    
    
    

    return 0;
}

おすすめ

転載: blog.csdn.net/qq_45458915/article/details/102718184