ブルーブリッジカップVIP質問JAMカウントアルゴリズムのトレーニング

JAMカウントアルゴリズムのトレーニングの質問

リソースの制約
制限時間:1.0秒メモリ制限:256.0メガバイト
問題の説明
  ジャムはフランケンシュタインのような一匹狼です。彼はそうすることが、世界をよりカラフルになることを感じて、彼はアラビア数字がカウントを使用しませんが、小文字の使用がカウントされます。彼のカウント方法では、それぞれの桁数は(文字の数が同じ)と同じであり、文字、文字列によって元の順序は、その背後にある文字の頂面よりも小さくなっています。私たちは、このような「デジタル」と呼ばれるジャム番号を呼び出します。図中のジャム、互いに異なると左から右への各文字は、厳密に増加しています。各時間は、文字ジャムさらに指定された範囲は、例えば、2から10まで、{B、C、D、Eの使用のみを表し 、F、G、H、I、J} 手紙。必要ビット数である場合、図5は、直ちにジャムデジタル「bdfij」の後の図は、「bdghi」でなければなりません。(我々が回転した場合数ジャム"bdfij"および"bdghi" U、Vと、その後、U <V <スパン>を表し、そして、その結果、U <P <V <スパン>いかなるデジタルジャムPが存在しません )。数字の背後にはあまりないジャム場合は、その後、いくつかは、いくつかの出力にある、5つのジャム番号直後のファイル順次出力からのデジタル読み取り用Jam:あなたの仕事はしています。
入力フォーマットは
  2つの行を有し、行1は、3つの正の整数であり、スペースで区切られた:
  STW
  (、tはデジタルビットとして使用される文字の最大数のために使用される文字の最小数である.W数、満足番号3:1≤s<T≤26、
  2≤w≤ts) 第二行は、必要な数のジャムを満たすために小文字のw列を有します。
  与えられたデータを使用して、検証する必要はありません、正しいです。
出力フォーマット
  5行までの、5つのジャム番号、そうでない場合は数字の後ろにあまりジャムのデジタル入力の直後ジャムに、その後いくつかの出力にいくつかがあります。ジャム出力の各行は、文字が小からなる文字列wが書かれた唯一の番号であり、余分なスペースを持っていません。
サンプル入力
2 10 5
bdfij
サンプル出力
BDGHI
bdghj
bdgij
bdhij
befgh

アイデア:最も重要なことは、限り理解として、質問を理解するために、よく行うための法律を見つけることです。まず、彼はbdfijを入力し、二十から六英語のアルファベットの最後のJ的な変化は10で、最大値に達したので、最後から二番目の位置を見つけるための時間は、第2の変換は9上で、仕事をしない、プラスしましたプラス1、及びF、F 1を加えG、Gプラス1に基づいてプッシュバックので、両者は底第三のためのルックので、第三のF変換は条件に合わせて、6を超える、10よりも大きいですIが1だけインクリメントされ、H、Hであり;場合私に最後のもの、及びその後I 10よりも、上記の手順を繰り返し、問題を満たすことを意図し、Jを1だけインクリメントされ、サイクルが算出された、5の最大値(タイトルにbが2である、など)、1の値を知ることができます。

コードは以下の通りであります:

#include<iostream>
using namespace std;
int main(){
	int s,t,w,i=0,j,j1=1,x=0,y;
	char a[32],c;
	cin>>s>>t>>w;
	cin>>a;
	while(x<5){
		for(i=w-1;i>=0;i--){
			if(a[i]<('a'+t-j1)){
				j=i;
				break;
			}
			j1++;
		}
		j1=1;
		c=a[j];
		for(y=0;y<j;y++){
			cout<<a[y];
		}
		for(y=j;y<w;y++){
			c=c+1;
			cout<<c;
			a[y]=c;
		}
		cout<<"\n";
		x++;
	}
}
公開された51元の記事 ウォン称賛47 ビュー2006

おすすめ

転載: blog.csdn.net/weixin_45269353/article/details/104565745
おすすめ