删数问题
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();
}
}
}