• 中国电信翼支付2014编程大赛决赛


    如果有误,希望可以给我留言,谢谢。
     
    题目详情(只限Java)

    给定一串整数,你只能进行两种操作:任选一个整数放到这串数之前,或者这串之后。所有的整数都不相等。

    问把这串整数变为由小到大的排好序最少需要的操作次数。

    输入格式:

    多组数据,每组数据1行,包含若干个空格分隔的非负整数,每个整数不超过2147483647。

    输出格式:

    每组数据输出一行包含一个整数,表示需要最少操作的次数。

    答题说明

    输入样例

    1 2 3

    1 4 2

    10 2 1

    输出样例:

    0

    1

    2

    算法解析:

    长度即原数组的(子序列)和排好序的数组的(连续子序列)相同的序列的最长长度。

    import java.util.Scanner;
    
    public class Paixu {
    	public static void main(String[] argv ){
    		
    		Scanner br =new Scanner(System.in);
    		String[] k;
    		k = new String[100];
    		int num=0; 
    		
    		// 获取多行输入  数字间用空格隔开  行数小于100
    		
    		do {  
    		    k[num] = br.nextLine();  
    		    if (k[num].equals("")) {  
    		     break;  
    		    }  
    		    num++;	   
    		} while(true);    
    		br.close();
    		
    		
    		
    		for(int i=0;i<num;i++){
    			int max=1;
    			String[] sf=k[i].split(" ");
    			int[] s,e;
    			s=new int[sf.length];
    			e=new int[sf.length];
    			
    			// 把获取的每一行字符转化成int数组 e[] s[];两个数组相同。
    			
    			for(int m=0;m<sf.length;m++){
    				s[m]=Integer.parseInt(sf[m]);
    				e[m]=Integer.parseInt(sf[m]);
    			}      
    			
    			//冒泡排序  数组s[]
    			for(int j=0;j<sf.length-1;j++){
    				for(int p=0;p<sf.length-1-j;p++){
    					if(e[p]>e[p+1])
    					{
    						int tmp=e[p];
    						e[p]=e[p+1];
    						e[p+1]=tmp;
    					}
    					
    				}
    			}
    			
    			//把排好序的数组  e[]每个值在原数组s[]中的序号 赋给自己
    			for(int j=0;j<sf.length;j++){
    
    				for(int p=0;p<s.length;p++){
    					
    					if(e[j]==s[p])
    						{
    						e[j]=p;
    						break;
    						}
    				}	
    			}
    			int temp=1;
    			
    			//把e[]中的最长连续增长序列的长度 赋给 max
    			for(int j=0;j<e.length-1;j++){
    				
    				if(e[j+1]>e[j])
    					temp++;
    				else
    					temp=0;
    				if(temp>max)
    					max=temp;
    			}
    			int out=e.length-max;
    			System.out.println("The minimum change: "+out);
    			
    		}
    		
    		
    	}
    
    }
    

     效果演示:

     

  • 相关阅读:
    SWT的TreeViewer和TableViewer的交互
    利用SVNKit进行版本库的树的导出
    使用SVNkit删除版本库的文件
    SVN中正确的add操作和delete操作
    SVNKIT一段代码的分析
    Eclipse中的SVN的冲突解决方案详解
    CSS3实现小于1px的边框(移动端)
    向左滑动删除一区域内容(移动端)
    下拉框文本框+复选(选中的显示在文本框中)
    弹性盒布局(自适应)
  • 原文地址:https://www.cnblogs.com/udld/p/4171476.html
Copyright © 2020-2023  润新知