Week8 CSP-M2 B-HRZ英語を学ぶGym-270737D

タイトルの説明:

 

 入力と出力のスケールと合意:

 

アイデア:

長さが10 ^ 6を超えない場合、直接暴力O(26 * N)で十分です。

注目に値する1つの点は、要件を満たしている場合に、辞書式順序で出力する方法です。

私の方法は、最初に26文字のcnt [i]の出現回数を数えることです。

次に、cntを1から26までトラバースし、それが0であることを確認して、キューに入れます。

キューから取り出されると、辞書式であることが保証されます。キューが先入れ先出しだからです。

もちろん、逆の順番で出力することも可能です。

要約:

状態が転送されるとき、キューとcnt配列はクリアされません!

その時何を考えていたのか分からなかった!(親族が居間で大声で食べているかもしれません...)


		i ++) { 
			if(cnt [i]> 1)break; 
		}
	 
			if(cnt [i] == 0)q.push(i);
		//文字が0または1の
		場合、次のようにできますif(i == 27)// 26全体を検索した後、文字はもうありません
		{ 
			// 
			(int j = l; j <= r; j ++ )
			{ 
				if(s [j]!= '?')cout << s [j]; 
				else printf( "%c"、q.front()+ 'A'-1)、q.pop(); 
			} 
			cout << endl; 
			return 0; 
		} 
		else 
		{ 
			l ++、r ++; 
			memset(cnt、0、sizeof(cnt)); 
			while(!q.empty())q.pop(); 
		} 
	} 
	cout <<-1 < <endl; 
	return 0; 
}

  

 

おすすめ

転載: www.cnblogs.com/qingoba/p/12719584.html