精华内容
下载资源
问答
  • js所给数字中随机选几个数

    千次阅读 2018-06-26 09:37:27
    例: 0~9十个数字中随机选出5个数 var arr = [0,1,2,3,4,5,6,7,8,9]; var out = []; var num = 5; while(out.length < num){ var temp = (Math.random()*arr.length) >> 0; ...

    例:  从0~9十个数字中随机选出5个数

        var arr = [0,1,2,3,4,5,6,7,8,9];
    		    var out = [];
    		    var num = 5;
    		while(out.length < num){
    		     var temp = (Math.random()*arr.length) >> 0;
    		     out.push(arr.splice(temp,1));
    		 }
     alert(out)

     如上代码:

              声明 数组out来接收选出的5个数字

              num=5;指定循环5次.

         Math.random()  随机生成0~1的随机数,  乘以 arr.length--10;即可生成 0 ~ 9 的随机数. 注意,目前还不一定为整数,

              再把每次生成的数push到 out数组中,因为我们要的是整数,所以 arr.splice(temp,1)截取他的整数位.

    展开全文
  • Ø解题思路: 定义数组a,用来存放10个数 ...用“打擂台”算法,依次将数组元素a[1]a[9]与m比较,最后得到的m值就是10个数中的最大者 #include int main() { int max(int x,int y); int a[10],m,n
    Ø解题思路:
    定义数组a,用来存放10个数
    设计函数max,用来求两个数中的大者
    在主函数中定义变量m,初值为a[0],每次调用max函数后的返回值存放在m中
    用“打擂台”算法,依次将数组元素a[1]到a[9]与m比较,最后得到的m值就是10个数中的最大者
    #include <stdio.h>
    int main()
      {int max(int x,int y);            
       int a[10],m,n,i;
       printf("enter 10 integer numbers:");
       for(i=0;i<10;i++)
         scanf("%d",&a[i]);
       printf("\n");
       for(i=1,m=a[0],n=0;i<10;i++)
       {                       
    	  if (max(m,a[i])>m)                 // 若max函数返回的值大于m                  
    	  {m=max(m,a[i]);                    // max函数返回的值取代m原值
    	   n=i;                              // 把此数组元素的序号记下来,放在n中
    	  }
       }
        printf("The largest number is %d\nit is the %dth number.\n",m,n+1);
       }
    
    int max(int x,int y)
    {
    	return(x>y?x:y);
     }



    
    
    
    
    
    
    
    
    
    
    展开全文
  • 输入10个数,输出值最大的元素和该数是第几个数。(数组元素作函数实参)解:程序: #includeint max(int x, int y){ return (x > y ? x : y);}int main(){ int a[10], m = a[0], n = 0,i; printf("enter 10 ...

    输入10个数,输出值最大的元素和该数是第几个数。(数组元素作函数实参)

    解:程序:

     

    #include<stdio.h>


    int max(int x, int y)

    {

    return (x > y ? x : y);

    }


    int main()

    {

    int a[10], m = a[0], n = 0,i;

    printf("enter 10 integer numbers:");

    for (i = 0; i < 10; i++)

    {

    scanf("%d", &a[i]);

    }

    printf("\n");

    for (i = 1; i < 10; i++)

    {

    if (max(m, a[i])>m)

    {

    m = max(m, a[i]);

    n = i;

    }

    }

    printf("The largest number is %d\nit is the %dth number.\n", m, n+1);

    return 0;

    }


    结果:

    enter 10 integer numbers:-1 0 99 54 66 7 8 23 44 7

     

    The largest number is 99

    it is the 3th number.

    请按任意键继续. . .


    本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1747859

    展开全文
  • 思路一:排序法, 对n个数排序,然后迭代前k个数即可,时间复杂度以 快排为准 是O(nlogn),代码略   思路二:局部替换法 假设前k个数就是整个数组中最小的,找出最大的数和k+1比较,如果比k+1大就和K=1互换位置,然后再...

    思路一:排序法,  对n个数排序,然后迭代前k个数即可,时间复杂度以 快排为准 是O(nlogn),代码略

      

    思路二:局部替换法   假设前k个数就是整个数组中最小的,找出最大的数和k+1比较,如果比k+1大就和K=1互换位置,然后再将k数组中的最大数找出,在进行比较,知道数组末尾.时间复杂度O(nk)

                             

    	/**
    	 * 思路 二 
    	 * 把整个数组分为k和n-k 2部分,找出最小的K个数的过程其实就是把最大的数放到n-k部分的过程,每次比较都把最大的数交换到n-k的部分里面。
    	 * 1.把最先遍历到的k个数赋值到大小为k的数组2中 
    	 * 2.在数组2中找出最大元素max,时间复杂度是o(k),因为如果
    	 * 3.在数组1中遍历剩下的n-k个数,和max比较,如果小于max则交换位置,重复2的过程 o(k)+(n-k)o(k)=n*o(k)
    	 **/
    	public static void scheme1(int[] ins, int k) {
    		int[] ks = new int[k];
    		// 最先遍历的k个数放入数组中 o(k)
    		for (int i = 0; i < k; i++) {
    			ks[i] = ins[i];
    		}
    		for (int i = k; i < ins.length; i++) {
    			if (getMax(ks) > ins[i]) {
    				ks[0] = ins[i];
    			}
    		}
    		// 输出最小的K个数
    		for (int i = 0; i < k; i++) {
    			System.out.print(ks[i] + " ");
    		}
    	}
    		public static int getMax(int[] arr) {
    		// 选择一个基数,分别于数组中其他元素比较,始终保持基数对应的指针是最大值
    		int radix = 0;
    		for (int i = 0; i < arr.length; i++) {
    			// 如果sub小于旁边值则交互位置
    			if (arr[radix] < arr[i]) {
    				int temp = arr[radix];
    				arr[radix] = arr[i];
    				arr[i] = temp;
    			}
    		}
    		return arr[radix];
    	}

    思路三: 对思路二中找最大数的优化,用前K个数建立最大堆,每次用堆顶元素和n-k中各个元素比较,如果堆顶元素较大,则互换位置,然后调整堆,使之重新成为最大堆。时间复杂度

    O(n*logk)

       

    public static void headSort(int[] array) {
    		if (array == null || array.length <= 1) {
    			return;
    		}
    		buildMaxHeap(array);
    	}
    /**
     * 创建堆
     * 
     * */
    	public static void buildMaxHeap(int[] array) {
    		if (array == null || array.length <= 1) {
    			return;
    		}
    		//从最后的一个非叶子节点向上开始排,避免迭代没有意义的叶子节点
    		int half = (array.length-1) / 2;  
    		for (int i = half; i >= 0; i--) {
    			maxHeap(array, array.length, i);
    		}
    	}
    /**
     * 
     * 调整堆(沉降法)
     * logn
     * */
    	public static void maxHeap(int[] array, int heapSize, int index) {
    		int left = index * 2 + 1;
    		int right = index * 2 + 2;
    
    		int largest = index;
    		//判断有没有左节点,如若有则比较替换largest
    		if (left < heapSize && array[left] > array[largest]) {
    			largest = left;
    		}
            //判断有没有右节点,如若有则largest和右节点比较,注意largest有可能是left也有可能是index
    		if (right < heapSize && array[right] > array[largest]) {
    			largest = right;
    		}
    
    		if (index != largest) {
    			int temp = array[index];
    			array[index] = array[largest];
    			array[largest] = temp;
    			//被替换的largest节点所在的堆,需要重新调整,使小值/大值一直下沉
    			maxHeap(array, heapSize, largest);
    		}
    
    	}
    	
    	/**
    	 * 思路二 最大堆法
    	 * 利用树形的特点保存前面比较的结果,可以减少比较次数s
    	 */
    	public static void scheme2(int[] ins, int k) {
    		int[] ks = new int[k];
    		// 最先遍历的k个数放入数组中 o(k)
    		for (int i = 0; i < k; i++) {
    			ks[i] = ins[i];
    		}
    		//构建前k个数的最大堆
    		headSort(ks);
    		//n-k个数和前面和k中最大数比较
    		for (int i =k; i < ins.length; i++) {
    			//如果堆顶大于n-k中数,则交换位置
    			if(ks[0]>ins[i]){
    				ks[0]=ins[i];
    				//调整堆,堆顶被替换了,加入被替换的值非常小,会一直下沉到叶子节点.
    			    maxHeap(ks,ks.length,0);
    			}
    			
    		}
    		// 输出最小的K个数
    		for (int i = 0; i < k; i++) {
    			System.out.print(ks[i] + " ");
    		}
    	}
    


    测试:

    public static void main(String[] args) {
            // 前key个最小的数
            int k = 6;
            int[] ins = new int[] { 8, 6, 10,9,7, 2 ,1,20,13};
            //scheme1(ins, k);
            scheme2(ins, k);
        }




    展开全文
  • 位dp总结 之 入门模板

    万次阅读 多人点赞 2016-08-03 14:37:59
    for(int i=le;i;i++) if(right(i)) ans++; 基础篇 ...数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位......数的每一位就是数位啦! 之所以要引入数位的概念完全就是为了dp。
  • #include int main() { int i = 0; int max(int x,int y);... int a[10],m,n; printf("intput 10 number:"); for(i = 0;i < 10;i ++) { scanf("%d",&a[i]); } printf("\n"); for(i = 0,m = a[0],n = 0;i
  • 方法1 import random lst = [] rep_lst = [] #重复数字 ...for i in range(10): temp = random.randint(1,20) #产生随机数,闭区间 if temp in lst and temp not in rep_lst: #寻找重复数字 rep...
  • 就是说, 一开始把 1 拿走, 隔1个数(2), 把3拿走, 再隔2个数(4, 5), 把6拿走, 再隔3个数(7, 8, 9)把10拿走. 数100之后再返回来2开始循环, 直到最后剩下1个数为止, 请问最后剩下? 如果是1n呢? 请用Java编程...
  • 卡特兰的应用,你知道几个

    千次阅读 2015-03-27 15:47:34
    1. 由n个+1和n个-1构成2n项其部分和满足的序列个数等于第n个Catalan数。 假设不满足条件的序列个数为,那么就有。而对于不满足的序列,必然存在某一个奇数位使,而且+1的个数恰好比-1的个数少一个,此时我们将前k...
  • 欢迎使用Markdown编辑器 ...我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作...
  • 这个题目可以用我们前面介绍的打擂台的方法来做:先输入一个数作为擂主,然后,第二个数开始,每输入一个数都跟擂主比较,如果大于擂主,则记住该数,使该数成为新擂主,否则擂主不变…… 代码如下: #include...
  • 题目一个只有2、3、5或7的质数的数被称为一个不起眼的数。第1、2、3、4、5、6、7、8、9、10、12、14、15、16、18、20、21、24、25、27、...我的想法:分别算出来一个数是2,3,5,7的次方,再将次数相乘,然后发...
  • 森林结点数,边数与树个数的关系

    万次阅读 多人点赞 2016-11-21 16:28:47
    森林结点数,边数与树个数的关系@(算法学习)若森林F有15条边,25个结点。则F中包含树的个数是:A. 8 B. 9 C. 10 D. 11分析:森林中树的个数与结点数的关系推导。 先看一般性的解决策略:根据一棵树的边数+1=结点数...
  • 一、简单版(只实现这两需求) ...#len函数可以查看字符串的长度,也就是能得出这是一个几,用str转换成字符串之后才能跟前后文字拼接 print('我把它倒过来给你看看:',''.join(list(reversed(nu...
  • python 求10个数的平均数

    万次阅读 2019-03-21 12:58:53
    一,已知十个数,求平均数。 L=[1,2,3,4,5,6,7,8,9,10] a=sum(L)/len(L) print("avge is:", round(a,3) ) 运行结果: avge is: 5.5 二,设置输入个数,求平均数 n = int(input("请输入所求平均数的个数: ...
  • 10 亿个不重复的数字,内存中只能放进 1 万个数,怎么找到最大的 10 万个数字? 这道题的思路是,先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使...
  • Pandas 关于统计个数几个总结

    万次阅读 2018-12-16 11:36:47
    我们都知道 df.value_counts()是统计个数的小能手。那么怎么更熟练地运用起来呢? 以下是自己总结地种场景: &gt;&gt;&gt;&gt;&gt;df 0 美国 1 中国大陆 香港 2 法国 3 美国 4 意大利 5 ....
  • 有15个数按从小大顺序存放在一个数组中,输入一个数,输出一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。 #include <stdio.h> #include <stdlib.h>...
  • 11000中多少包含3的

    千次阅读 2013-12-05 09:05:12
    题目为: 1~1000的1000个数中有多少个包含3的数,其实这个问题用排列组合的方法可以很好的解出来。...二、两位数10~99:十位上可已选择除3外的1~9的8个数,个位上可以选择除3外的0~9的9个数,故8*9=72; 三、三位
  • 题目:将一个数分成几个不同的数之和,满足这些数的乘积最大。  刚开始,没有看清“不同”两个字,发现一个数被分成两个数的两个积满足最大,则两个数的差一定要最小。即有两种情况:  (1)奇数(2*n+1):则可以...
  • js实现数字1动态递增到10

    万次阅读 2017-08-21 16:24:57
    js实现数字1动态递增到10 0 var num = 0; var t = setInterval(function(){ num++; var span1 = document.getElementById("span1"); span1.innerText = nu
  •  先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆
  • 例:数组A中抽取3个数,数组B中抽取2个数,数组C中抽取1个数,组成6个数的组合,求源程序。 A={3,4,6,7,8,9,11,13,14,15,16,18,19,20,24,27,28,29,33} B={1,2,10,12,17,21,22,25,26,30,31,32} C={5,23}
  • 最大10的索引(位置),可先按降序排序,得到索引号,然后将前10个取出即可。 建议方法:order(x,decreasing=TRUE)[1:10] 过程详解: 1、测试数据x> x [1] 0.00 0.00 0.00 0.00 0.00 0.00 0.06 0.09 0.20 ...
  • JAVA之输出斐波那契数列的前10个数

    万次阅读 2017-01-23 11:16:45
    JAVA之输出斐波那契数列的前10个数
  • 求一个数位数

    千次阅读 2013-08-28 23:26:38
    在看《数据结构与算法分析》的基数排序时,用到了数字是位数,最开始我是直接用字符串来计算的,后来想了想,还是网上找了找答案,把答案的列出的...//求一个数位数 //a = 999999999 //N = 100000000 //time1 =
  • 获取numpy数组中最大或最小的几个数

    千次阅读 2020-07-09 14:58:07
    #!/usr/local/bin/python # -*- coding: UTF-8 -*... 获取numpy数值中最大或最小的几个数 :param np_arr: numpy数组 :param several: 最大或最小的个数(负数代表求最大,正数代表求最小) :return: several_min_or
  • 求一个数阶乘的位数

    千次阅读 2015-08-15 23:01:38
    求一个数阶乘的位数flyfish 2015-8-15例如 7!=5040 ,7的阶乘结果是4位数(10进制)求一个数的位数1 循环方法int get_digit_loop(int N) { int digit = 0; do { digit ++; } while ((N /= 10) > 0); return ...
  • 给出一不多于5位的整数,要求 1、求出它是 2、分别输出每一位数字 3、按逆序输出各位数字,例如原为321,应输出123。 将下面的程序填写完整。 #include &amp;lt;stdio.h&amp;gt; int main() { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,225,305
精华内容 490,122
关键字:

从8数到10一共数了几个数