精华内容
下载资源
问答
  • 一、奇偶个数(5分) 题目内容: 你的程序要读入一系列正整数数据,输入-1表示输入结束...两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。 ...

    一、奇偶个数(5分)

    题目内容:

    你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。

     

    输入格式:

    一系列正整数,整数的范围是(0,100000)。如果输入-1则表示输入结束。

     

    输出格式:

    两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。

     

    输入样例:

    9 3 4 2 5 7 -1 

     

    输出样例:

    4 2

    时间限制:500ms内存限制:32000kb

    #include<iostream>
    using namespace std;
    
    int main()
    {
    	int x;
    	int odd_num = 0;        //奇数个数
    	int even_num = 0;        //偶数个数
    	scanf("%d", &x);
    
    	while (x != -1) {
    		if (x % 2 == 0)
    		{
    			even_num++;
    		}
    		else
    		{
    			odd_num++;
    		}
    		scanf("%d", &x);
    	}
    	printf("%d %d", odd_num, even_num);
    
    	system("pause");
    	return 0;
    }

     

    二、数字特征值(5分)

    题目内容:

    对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二进制数字。比如,对于342315,这个二进制数字就是001101。

     

    这里的计算可以用下面的表格来表示:

     

    数字

    3

    4

    2

    3

    1

    5

    数位

    6

    5

    4

    3

    2

    1

    数字奇偶

    数位奇偶

    奇偶一致

    0

    0

    1

    1

    0

    1

    二进制位值

    32

    16

    8

    4

    2

    1

     

    你的程序要读入一个非负整数,整数的范围是[0,1000000],然后按照上述算法计算出表示奇偶性的那个二进制数字,输出它对应的十进制值。

     

    提示:将整数从右向左分解,数位每次加1,而二进制值每次乘2。

     

    输入格式:

    一个非负整数,整数的范围是[0,1000000]。

     

    输出格式:

    一个整数,表示计算结果。

     

    输入样例:

    342315

     

    输出样例:

    13

    时间限制:500ms内存限制:32000kb

    #include<math.h>
    #include<iostream>
    using namespace std;
    
    int main()
    {
    	int number;		//输入非负整数
    	scanf("%d", &number);
    	//检验整数不能为负数
    	while (number < 0)
    	{
    		printf("请重新输入非负整数:");
    		scanf("%d", &number);
    	}
    
    	int n = 0;		//非负整数位数
    	int digit = 0;		//奇偶一致标志位
    	int decimal_number = 0;		//最终输出的十进制数
    	int binary = 1;		//二进制位值
    	
    	//将整数从右向左分解,二进制值每次乘2,而二进制值每次乘2。
    	do {
    		n++;		//二进制值每次乘2
    		int x = number % 10;		//取出最后整数中的最后一位数
    		if ((n % 2) == (x % 2))		//判断是否奇偶一致,修改奇偶一致标志位
    		{
    			digit = 1;
    		}
    		else
    		{
    			digit = 0;
    		}
    
    		decimal_number += digit*(binary);	//累加进十进制数
    		binary *= 2;		//二进制值每次乘2
    		number /= 10;		//消去整数最后一位
    	} while (number > 0);
    
    	printf("%d\n", decimal_number);
    
    	system("pause");
    	return 0;
    }

     

    展开全文
  • 判断给定数中质数的个数,并返回int,其为质数的个数。 思路: 找出质数的特征。除了特殊的质数1与2外,其余能被2、3、5、7整除的数都称之为合数。 (且判断输入数是否为正数,负数直接?有必要么?) ...

    两天一题系列:
    准备鞭策自己瞎做个两天一题系列,关于每题写一篇感悟和理解。

    题目:
    摘自LeetCode。
    判断给定数中质数的个数,并返回int值,其值为质数的个数。

    知识点:

    1. 循环语句。(历遍小于给定数的每个数)
    2. 判断。(判断历遍小于给定数的每个数中是否存在合数)

    困难:
    A-想按照思路实现时语句总出现问题。
    B-跑程序找不到Bug原因。

    思路:

    1. 找出质数的特征。
      质数:只能被1和它本身除即为质数。
      (且判断输入数是否为正数,负数直接?有必要么?没有必要判断给定数是否为负数)

    2. 双循环。
      A-第一层循环将给定数n从2开始,依次往上加,直到循环数等于给定数n。历遍小于给定数的每一个数。
      B-第二层循环在第一层循环中,
      且将第一层循环数依次除以2、3、5、7.一旦取余的数为0,则跳出第二层循环,第二层循环停止条件为:第二层循环数等于第一层循环数。当第二层循环结束,质数的个数加一。
      以上思路有问题,即使不能被2、3、5、7整除仍有可能被13、17等数整除,因此第二层循环需从2开始,当历遍的某数能被第二层循环中数整除,即取余为0,则判定第一层循环中的历遍数为合数。
      第二层循环停止条件为第二层循环数<第一层循环历遍数。

    以上。

    代码表示为:

    class Solution {    public int countPrimes(int n) {    
    int i = 0,j = 0;    
    int k = 0;    
    int a;
        switch(n){        
    	case 1:          
    		i = 0;          
    		return i;        
    	case 2:          
    	   	i = 0;          
    	    	return i;        
            default:            
      		for(j = 2;j < n;j++){                
     			 for(k = 2,a = 0;k <= j;k++){                    
      				if(k%j == 0){                       
      					a++;                       
    				        break;                    
     					    }else{                        
      						continue;                    
     						 }                
       					     }                
     		 switch(a){                    
      			case 0:                      
     		        i++;                      
      			break;                
      			}            
     		 }        
      	 }    
      	  return i;
            }
    }

    总结:
    程序没跑出来。
    A-结果:无论输入什么数输出都是
    B-猜想:一定进入某一循环或者一遇到某条件直接为0,且不清楚break与continue的差别。
    C-仍需测试。

    ——————————————————————————————————

    以下:2019/11/23重新调试
    易错点:
    1 JAVA中取余为运算符%,取整为运算符/。
    2 循环中break与continue的差别,若同时存在双层循环,break是跳出两层循环,还是仅仅跳出它所在的那一层循环?

    调试思路:
    A先调试3的质数的结果,按照原思路,在eclipse中添加输入语句,判断程序是否进入这一段循环等。
    B写出另一个程序,先找到判断质数的方法。
    如指定数为4,判断4是否为质数。
    思路:历遍4中的每一个数判断其中是否存在能被4整除的数,若存在能被整除的数(除1与它本身),则返回false;若不存在,则返回true.

    static boolean getOnePrimeIf(int primeOne) {
      //判断某数primeOne(primeOne<prinme)是否为质数,是返回true,不是返回false
      boolean a = true;
      int i;//历遍循环数。
       for(i = 2;i < primeOne;i++) {
    //只要出现了第一个能被整除的数,除1外,i从2开始,则判定该数为合数
    	    if(primeOne%i == 0) {
    	     a = false;
    	     System.out.println("执行"+(i-1)+"次"+primeOne%i);
    	     return a;
    	    }else {
    	     System.out.println("执行"+(i-1)+"次");
    	     continue;
    	    }
    	   }
    	  return a;
     }

    多次测试后,该程序可以顺利判断某给定数是否为质数。以下附上测试结果,判断169及13是否为质数。
    在这里插入图片描述
    C 第二层循环可按照步骤B中所述。需要改动的是,将返回boolean值替换为int值,若是质数则返回1,若不是质数则返回0。
    上一段代码错误原因为:当内层循环判断了出现合数时,直接跳出内层循环,不进行质数相加,因此进入不了default中的switch。
    以下附上代码:

    static int howMuch(int primeThree) {//返回某数中质数的个数
      int a = 0;
      int b = -1;
      //按照道理只要第一道循环中历遍做好就好。
      int j,i;//第一个循环数和第二个循环数
       for(j = 2;j < primeThree;j++) {
        //从2开始历遍指定数,直到小于指定数,对历遍数做是否为质数的判断
        System.out.println("j:"+j);
        for(i = 2;i < j;i++) {
         //历遍的该数进入此循环,为质数则a+1
         System.out.println("i:"+i+"a:"+a);
         if(j%i == 0) {
          a++;//合数
          System.out.println("a:"+a);
          System.out.println("if:"+j+"%"+i+"-"+j%i);
          break;//break之后不会在第一层循环中计数了
         }else {
          System.out.println("else:"+j+"%"+i+"-"+j%i);
          continue;
          //这个质数的+1应该放在哪?
         }
        }
       }
       System.out.println("最终循环中合数的个数为:"+a);
       b += primeThree-a;
      return b-1;
     }

    有点啰嗦,为了知道代码从哪个步骤走,我每一步都添加了打印输出。
    思路:
    内层循环采用上面测试成功的能判断是否为质数的程序,外层循环仅历遍给定数中从2到(给定数-1)。但质数的增加比较难做到,一旦内层循环判断给定数中某数为合数,则直接跳出该循环,无法执行加1的步骤。因此,一旦判断出该数为合数,则计合数+1,最终返回的质数为给定数-合数的个数(且由于2的特殊性,将最终回的质数个数额外-1即可)。

    结论:
    力扣中程序不正确,超出时间限制。

    展开全文
  • 第一行为整数n,表示数的个数。 第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。 输出格式 输出三行,每行一个整数。第一行表示这些数中的最大,第二行表示这些数中的最小值,第三行表示这些数的和。 ...

    基础练习 数列特征  
    问题描述
    给出n个数,找出这n个数的最大值,最小值,和。
    输入格式
    第一行为整数n,表示数的个数。
    第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。
    输出格式
    输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
    样例输入
    5
    1 3 -2 4 5
    样例输出
    5
    -2
    11
    数据规模与约定
    1 <= n <= 10000。

    import java.util.Scanner;
    import java.util.*;
    public class Main{
    public static void main(String[] args)
    {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int a[]=new int[n];
    int sum=0;
    for(int i=0;i<n;i++)
    {
    a[i]=sc.nextInt();
    sum=sum+a[i];
    
    }
    Arrays.sort(a);
    System.out.println(a[n-1]);
    System.out.println(a[0]);
    System.out.println(sum);
    }
    }
    


     基础练习 字母图形  
    问题描述
    利用字母可以组成一些美丽的图形,下面给出了一个例子:
    ABCDEFG
    BABCDEF
    CBABCDE
    DCBABCD
    EDCBABC
    这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
    输入格式
    输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
    输出格式
    输出n行,每个m个字符,为你的图形。
    样例输入
    5 7
    样例输出
    ABCDEFG
    BABCDEF
    CBABCDE
    DCBABCD
    EDCBABC
    数据规模与约定
    1 <= n, m <= 26。

    import java.util.Scanner;
    public class Main{
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int row=sc.nextInt();
    int col=sc.nextInt();
    char c[]=new char[col];
    int temp=0;
    for(int m=0;m<col;m++)
    {
    c[m]=(char)('B'+m);
    }
    for(int i=0;i<row;i++)
    {
    for(int j=0;j<col;j++)
    {
    if(j<temp)
    {c[j]=(char)(c[j]+1);}
    if(j>=temp)
    {c[j]=(char)(c[j]-1);}
    }
    temp++;
    System.out.println(c);
    
    }
    }
    
    }


    基础练习 01字串  
    问题描述
    对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
    00000
    00001
    00010
    00011
    00100
    请按从小到大的顺序输出这32种01串。
    输入格式
    本试题没有输入。
    输出格式
    输出32行,按从小到大的顺序每行一个长度为5的01串。
    样例输出
    00000
    00001
    00010
    00011
    <以下部分省略>

    public class Main{
    public static void main(String[] args) {
    for(int a1=0;a1<2;a1++)
    {
    for(int a2=0;a2<2;a2++)
    {
    for(int a3=0;a3<2;a3++)
    {
    for(int a4=0;a4<2;a4++)
    {
    for(int a5=0;a5<2;a5++)
    {
    StringBuffer sb=new StringBuffer();
    System.out.println(sb.append(a1).append(a2).append(a3).append(a4).append(a5));
    }
    }
    }
    }
    }
    }
    
    }


    基础练习 闰年判断  
    问题描述
    给定一个年份,判断这一年是不是闰年。
    当以下情况之一满足时,这一年是闰年:
    1. 年份是4的倍数而不是100的倍数;
    2. 年份是400的倍数。
    其他的年份都不是闰年。
    输入格式
    输入包含一个整数y,表示当前的年份。
    输出格式
    输出一行,如果给定的年份是闰年,则输出yes,否则输出no。
    说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。
    样例输入
    2013
    样例输出
    no
    样例输入
    2016
    样例输出
    yes
    数据规模与约定
    1990 <= y <= 2050。

    import java.util.Scanner;
    
    public class Main {
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    if((n%4==0 && n%100!=0 )||n%400==0)
    {System.out.println("yes");}
    else {System.out.println("no");}
    
    }
    }

     

    展开全文
  • 基础练习 数列特征 ...第一行为整数n,表示数的个数。 第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。 输出格式 输出三行,每行一个整数。第一行表示这些数中的最大,第二行

    基础练习 数列特征  
    时间限制:1.0s   内存限制:256.0MB
          
    问题描述

    给出n个数,找出这n个数的最大值,最小值,和。

    输入格式

    第一行为整数n,表示数的个数。

    第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

    输出格式
    输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
    样例输入
    5
    1 3 -2 4 5
    样例输出
    5
    -2
    11
    数据规模与约定
    1 <= n <= 10000。

    import java.util.Scanner;
    
    public class Main{
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int n = sc.nextInt();
    		int num = sc.nextInt();
    		int sum = num;
    		int max = num;
    		int min = num;
    		for(int i = 1; i < n; i++){
    			num = sc.nextInt();
    			sum = sum + num;
    			if(num > max){
    				max = num;
    			}
    			if(num < min){
    				min = num;
    			}
    		}
    		System.out.println(max);
    		System.out.println(min);
    		System.out.println(sum);
    	}
    }

    基础练习 字母图形  
    时间限制:1.0s   内存限制:256.0MB
          
    问题描述

    利用字母可以组成一些美丽的图形,下面给出了一个例子:

    ABCDEFG

    BABCDEF

    CBABCDE

    DCBABCD

    EDCBABC

    这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

    输入格式
    输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
    输出格式
    输出n行,每个m个字符,为你的图形。
    样例输入
    5 7
    样例输出
    ABCDEFG
    BABCDEF
    CBABCDE
    DCBABCD
    EDCBABC
    数据规模与约定
    1 <= n, m <= 26。
    import java.lang.Math;
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int row = sc.nextInt();
    		int column = sc.nextInt();
    		char c = 'A';
    		int i,j,absNum;
    		for(i = 0; i < row; i++){
    			for(j = 0; j < column; j++){
    				absNum = Math.abs(i - j) % 26;
    				System.out.print((char)(c+absNum));
    			}
    			System.out.println();
    		}
    	}
    }
    


    基础练习 01字串  
    时间限制:1.0s   内存限制:256.0MB
          
    问题描述

    对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

    00000

    00001

    00010

    00011

    00100

    请按从小到大的顺序输出这32种01串。

    输入格式
    本试题没有输入。
    输出格式
    输出32行,按从小到大的顺序每行一个长度为5的01串。
    样例输出
    00000
    00001
    00010
    00011
    <以下部分省略>
    public class Main{
    
    	public static void main(String[] args) {
    		String str = "";
    		int len;
    		for(int i = 0; i <= 31; i++){
    			str = Integer.toBinaryString(i);
    			len = str.length();
    			while(len <= 4){
    				System.out.print(0);
    				len++;
    			}
    			System.out.println(str);
    		}
    	}
    }
    
    基础练习 闰年判断  
    时间限制:1.0s   内存限制:256.0MB
          
    问题描述

    给定一个年份,判断这一年是不是闰年。

    当以下情况之一满足时,这一年是闰年:

    1. 年份是4的倍数而不是100的倍数;

    2. 年份是400的倍数。

    其他的年份都不是闰年。

    输入格式
    输入包含一个整数y,表示当前的年份。
    输出格式
    输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

    说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。

    样例输入
    2013
    样例输出
    no
    样例输入
    2016
    样例输出
    yes
    数据规模与约定
    1990 <= y <= 2050。
    import java.util.Scanner;
    
    public class Main{
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int year = sc.nextInt();
    		if(year % 400 == 0){
    			System.out.println("yes");
    		}else if(year % 4 == 0 && year % 100 != 0){
    			System.out.println("yes");
    		}else{
    			System.out.println("no");
    		}
    	}
    }
    









    展开全文
  • Python OpenCV fast 特征点检测

    千次阅读 2018-07-13 16:13:04
    参考 FAST(features from accelerated segment test)特征提取算法fast特征点是在像素级别上操作,假设有一个候选点P,判断该定P是不是fast特征关键是,查看P点四周16个附近灰度是不是大于指定...
  • 在所有数据中,正负样本判断正确的个数 召回率(recall) 在实际为正样本的数据中,被判定为正样本的个数 F1 F1是精确率和召回率的调和均值,相当于精确率和召回率的综合评价指标 ROC 接收者操作特征曲线...
  • info(), 详细列出非空值的个数 df.info() df.isnull().sum(), 同上 df.isnull().sum() df[[‘所需查询列一’,‘列二]], 以表格形式显示 df[['Age']].head(3) 如果没有[]是这样 df['Age'].head(3) 缺失...
  • 一、实验目的 ...3、采用非递归的编程方法,分别统计二叉树的节点个数、度为1、度为2和叶子节点的个数,以及数据值的最大值和最小值。 4、(选作内容)试编写按层次顺序遍历二叉树的算法。参考算法思想:
  • 建立一个线性表 首先了解线性表的操作: ...得到表长:获取线性表中实际包含数据元素的个数。 是否为空:判断线性表中是否包含数据元素。 清空操作:移除线性表中的所有数据元素。 此时需要建立一个接口或者抽象类...
  • java中名词概念理解

    2013-08-29 12:26:00
    方法的重载:方法名称相同,但参数的类型和个数不同,通过传递参数的个数及类型不同以完成不同功能的方法调用。 例如:System.out.println();属于方法的重载。 方法的重载一定是根据参数类型和个数来判断的。 ...
  • 方法的重载:方法名称相同,但参数的类型和个数不同,通过传递参数的个数及类型不同以完成不同功能的方法调用。 例如:System.out.println();属于方法的重载。 方法的重载一定是根据参数类型和个数来判断的。 构造...
  • 语音识别MATLAB实现

    热门讨论 2009-03-03 21:39:18
    一般情况下,极点的个数在12-16个之间就可以足够清晰地描述语音信号的特征了。 语音信号经过预处理,它的每个样值均可由过去若干个样值的线性组合来逼近,同时可以采用使实际语音抽样与线性预测抽样之间的均方差...
  • LINGO软件学习

    2009-08-08 22:36:50
    因此,派生集的索引个数是最终原始父集的个数,索引的取值是从原始父集到当前派生集所作限制的总和。 总的来说,LINGO可识别的集只有两种类型:原始集和派生集。 在一个模型中,原始集是基本的对象,不能再被拆分成...
  • 在这种情况之下,我们必须通过一些特征值判断图形。我们发现,每个文字的“洞”的个数是不一样的,所以我们可以来数洞的个数。 #include <iostream> #include <cstdio> #inc...
  • 读取标准化后的数字0~9,二化,对每个数字进行等分区域分割,统计 每个区域内的黑色像素点的个数,即为特征初值。采用欧式距离的模板匹配 法判断数字。 【实验要求】 给定数字0-9的原始样本集合,每个数字都有10...
  • 判断主成分的个数 Kaiser-Harris准则 (特征值大于1) Cattell碎石检验 (弯折处以上) 平行分析 (随机数据矩阵) fa.parallel( x , fa ) #fa show the eigen values #类似于 plot( x,show.legend=TRUE,fa="both...
  • 应于不同内存空间,它们的值是不同,可以完全独立地分别对它们进行操作。虽 然 new 运算符返回对一个对象引用,但与 C、C++中指针不同,对象引用是指 向一个中间数据结构,它存储有关数据类型信息以及...
  • 5.3.2 比较两个字组前导0的个数 96 5.3.3 与对数函数的关系 96 5.3.4 应用 97 5.4 后缀0计数 97 5.5 习题 105 第6章 在字组中搜索位串 106 6.1 寻找首个为0的字节 106 6.1.1 0字节位置函数的一些简单推广...
  • 创建(create)、销毁(destroy)、入队(push)、出队(pop)、遍历(travel)、计算队列中元素的个数(travel)、判断队列是否为满(full)、判断队列是否为空(empty)、获取队首元素(get_head)、获取队尾元素(get_tail) ...
  • 序列最重要的特征就是可包含多个元素, 因此和序列有关的特殊方法有如下几个:__len__(self):该方法的返回值决定序列中元素的个数。__getitem__(self, key):该方法获取指定索引对应的元素。该方法的 key 应该是...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

判断特征值的个数