首页 > 代码库 > 增序子数组个数
增序子数组个数
问题描述:
微软10.15笔试:对于一个数组{1,2,3}它的子数组有{1,2},{1,3}{2,3},{1,2,3},元素之间可以不是连续的,对于数组{5,9,1,7,2,6,3,8,10,4},
升序子序列有多少个?或者换一种表达为:数组int a[]={5,9,1,7,2,6,3,8,10,4} 。求其所有递增子数组(元素相对位置不变)的个数,
例如:{5,9},{5,7,8,10},{1,2,6,8}。
思想: 动态规划
代码:
1 import java.util.Scanner; 2 3 4 public class Main { 5 6 public static void main(String[] argv){ 7 8 Scanner in = new Scanner(System.in); 9 String [] k = in.nextLine().split(" "); 10 int [] s = new int[k.length];11 int [] id = new int[k.length];12 int [] out = new int[k.length];13 int sum=0;14 //System.out.println(k.length);15 for (int i=0; i<k.length; i++){16 s[i]=Integer.parseInt(k[i]);17 out[i]=0;18 }19 in.close();20 /* 每个值在数组中的大小序号 */21 for(int i=0; i<s.length; i++){22 int n=0;23 for(int j=0; j<s.length; j++){24 if(s[i]>s[j])25 n++;26 }27 id[i]=n; 28 }29 //System.out.println(" "+id[0]+id[1]+id[2]+id[3]);30 31 /* 动态规划 */32 for(int i=0; i<id.length; i++){33 34 out[id[i]]=out[id[i]]+1;35 for(int j=0; j<id[i]; j++){36 out[id[i]]=out[id[i]]+out[j];37 }38 //System.out.println(" "+id[i]+": "+out[id[i]]);39 sum=sum+out[id[i]];40 }41 42 /* 输出结果 */43 System.out.println(sum);44 45 }46 47 }
增序子数组个数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。