[カップ]ブルーブリッジ回文数(暴力の簡単な質問)

タイトル説明

観察数:12321,123321は、右または左読みに右に左からの読み出しの両方を共通の特徴を持っているが、同じです。このような数字は呼ば:回文番号。

この質問は、いくつかの5または6桁を見つけることが求められます。会う次の要件:
デジタル入力のそれぞれの整数の桁が等しいです。
入力する
正の整数N(10 <N <100) 、要求表さ及びデジタルを満たすこと。
出力
複数列、5つのまたは6の整数満たし要件を含む各行。
小規模から大規模な番号に順番に配置されました。
条件が満たされていない場合は、出力:-1
サンプル入力
44
出力例
99 899
499 994
589 985
598 895
679 976
688 886
697 796
769 967
778 877
787 787
796 697
859 958
868 868
877 778
886688
895 598
949 949
958 859
967 769
976 679
985 589
994 499

問題解決のためのアイデア

DFSを使用したかっただけ後パリンドロームデジタル出力を発見する必要があった5又は6であり
、次いで9にサイクル1から3サイクルを使用して
5にした後、計算された位置6カウント
漏れが発見されたが、3つWAを場合、回文数は、最初と最後のゼロでないことができ、他の数は0であってもよいです。

コード

package 回文数字;
import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		int x,y;
		int sum=0;
		for(int i=1;i<10;i++)
		{
			x=i;
			n=n-2*i;
			if(n>=0)
			{
				for(int j=0;j<10;j++)
				{
					y=j;
					n=n-2*j;
					if(n>=0)
					{	
						for(int k=0;k<10;k++)
						{
							if(k==n)
							{
								sum+=1;
								System.out.println(x*10000+y*1000+k*100+y*10+x);
							}
						}
					}
					n=n+2*j;
				}
			}
			n=n+2*i;
		}
		for(int i=1;i<10;i++)
		{
			x=i;
			n=n-2*i;
			if(n>=0)
			{
				for(int j=0;j<10;j++)
				{
					y=j;
					n=n-2*j;
					if(n>=0)
					{	
						for(int k=0;k<10;k++)
						{
							if(2*k==n)
							{
								sum+=1;
								System.out.println(x*100000+y*10000+k*1000+k*100+y*10+x);
							}
						}
					}
					n=n+2*j;
				}
			}
			n=n+2*i;
		}
		if(sum==0)
		{
			System.out.println(-1);
		}
	}

}

公開された20元の記事 ウォンの賞賛0 ビュー3865

おすすめ

転載: blog.csdn.net/weixin_44544406/article/details/104216163