删数问题 山东理工oj2072(贪心)

删数问题

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

 键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。

Input

  输入有多组 每组包括原始数n,要去掉的数字数s;

Output

 输出去掉s个数后最小的数

Sample Input

178543  4

Sample Output

13

老师布置的算法作业顺便交一发

代码

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.Scanner;
public class Main {
	private static Scanner sc = new Scanner(System.in);
	public static void main(String[] args)throws FileNotFoundException{
		while(sc.hasNext())
		{
			String s = sc.next();
			int k = sc.nextInt();
			if(k >= s.length())
				System.out.println(0);
			else
			{
				int cnt = 0;
				for(int i = 0 ; i < s.length(); i ++)
					if(s.charAt(i) == '0')
						cnt++;
				if(s.length() - cnt <= k)
				{
					System.out.println(0);
					continue;
				}
				else 
				{
					while(k > 0)
					{
						if(s.charAt(0) > s.charAt(1))
						{
							k--;
							s = s.substring(1, s.length());
//							System.out.println(k + "    " + s);
							continue;
						}
						cnt = 1;
						for(int i = 0 ; i < s.length() - 1; i++)
						{
							if(s.charAt(i) <= s.charAt(i + 1))
								cnt++;
							else 
								break;
						}
						if(cnt != 1)
							cnt--;
						String gg = "" + s.charAt(cnt);
						s = s.replaceFirst(gg,"");
						k--;
					}
				}
				
				while(s.charAt(0) == '0')
					s = s.substring(1);
				System.out.println(s);
				
			}
		}
	}
}

布置的作业

package 算法作业;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.Scanner;
public class H2 {
	private static Scanner sc = new Scanner(System.in);
	public static void main(String[] args)throws FileNotFoundException{
		try 
		{
			sc = new Scanner(new FileInputStream("E:\\input.txt"));
			PrintStream ps = new PrintStream("E:\\output.txt");
			System.setOut(ps);//把创建的打印输出流赋给系统。即系统下次向 ps输出
			while(sc.hasNext())
			{
				String s = sc.next();
				int k = sc.nextInt();
				if(k >= s.length())
					System.out.println(0);
				else
				{
					int cnt = 0;
					for(int i = 0 ; i < s.length(); i ++)
						if(s.charAt(i) == '0')
							cnt++;
					if(s.length() - cnt <= k)
					{
						System.out.println(0);
						continue;
					}
					else 
					{
						while(k > 0)
						{
							if(s.charAt(0) > s.charAt(1))
							{
								k--;
								s = s.substring(1, s.length());
//								System.out.println(k + "    " + s);
								continue;
							}
							cnt = 1;
							for(int i = 0 ; i < s.length() - 1; i++)
							{
								if(s.charAt(i) <= s.charAt(i + 1))
									cnt++;
								else 
									break;
							}
							if(cnt != 1)
								cnt--;
							String gg = "" + s.charAt(cnt);
							s = s.replaceFirst(gg,"");
							k--;
						}
					}
					
					while(s.charAt(0) == '0')
						s = s.substring(1);
					System.out.println(s);
					
				}
			}	
		}catch(FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/galesaur_wcy/article/details/84328125