精华内容
下载资源
问答
  • 科大讯飞笔试题

    2020-08-16 12:42:32
    1、定义一个n*m的数字矩阵,找出不同行不同列的两个数的乘积的最大值。 输入: n,m 2 2 1 2 3 4 输出最大值为:6 #include <vector> #include <string> #include <... i...

    1、定义一个n*m的数字矩阵,找出不同行不同列的两个数的乘积的最大值。

    输入: n,m

                2  2

                1  2 

                3  4

    输出最大值为:6

       

    struct Tp
    {
     int n;
     int m;
     int num;
     Tp(int a, int b, int c) :n(a), m(b), num(c) {}
    };
    int cmp2(Tp x, Tp y)
    {
     return x.num> y.num;
    }
    int main
    {
       vector<Tp> vtp;
     int M, N;
     cin >> M >> N;
     int  *p = new int[M*N];
     for (int i = 0; i < N; i++)
     {
      for (int j = 0; j < M; j++)
      {
       cin >> p[i*M+j];
       vtp.push_back( {i, j, p[i*M + j]});
      }
     }
     sort(vtp.begin(), vtp.end(), cmp2);
     int min =vtp[M*N-1].num;
     int smax = 0;
     for (int i = 0; i < M*N-1 && vtp[i].num>=min; i++)
     {
      for (int j = i + 1; j < M*N && vtp[j].num >= min; j++)
      {
       if (vtp[i].m != vtp[j].m && vtp[i].n != vtp[j].n)
       {
        if (smax < vtp[i].num * vtp[j].num) { 
         smax = vtp[i].num * vtp[j].num; 
         min = vtp[j].num; 
        }
        break;
       }
      }
     }
    
     cout << smax;
               return 0;
    }
    #include <vector>
    #include <string>
    #include <iostream>
    #include <algorithm>
    using namespace   std;
    int main()
    {
     int n;
     int m;
     cin>>n>>m;
     vector<vector<int> >  arr(n,vector<int>(m));
     for(int i=0;i<n;i++){
         for(int j=0;j<m;j++){
             cin>>arr[i][j];
         }
     }
     int  _max=-1;
     for(int i=0;i<n;i++){
    
         for(int j=0;j<m;j++){
           int temp=arr[i][j]; //
           for(int k=0;k<n;k++){
             for(int l=0;l<m;l++){
                 if(k!=i&&l!=j){
                   int temp2=arr[k][l];
                   _max=max(temp*temp2,_max);
                 }
             }
           }
         }
     }
     cout<<_max;
     return 0;
    }

    2.

    #include <iostream>
    using namespace  std;
    
    int main()
    {
        string str;
        getline(cin,str);
        int n;//move bits numbers
        cin>>n;
        int m=str.size();
        if(n<=0){
            cout<<str;
        }
        if(n>m){
            n%=m;
        }
        string res="";
        for(int i=n;i<m;i++){
            res+=str[i];
        }
        for(int i=0;i<n;i++)
        {
            res+=str[i];
        }
       cout<<res;
       return 0;
    }

    特别注意:有可能字符串带有空格,所以总结:

    对于数类型的用cin,对于字符串一律用getline(cin,str),输入带有空格的字符用cin.get()

    展开全文
  • 科大讯飞笔试题汇总

    热门讨论 2013-03-16 18:42:33
    关于科大讯飞的笔试题总结。。附答案
  • 科大讯飞笔试题2013

    2013-10-03 12:37:49
    STL STL库由哪部分组成 库由哪部分组成 库由哪部分组成 库由哪部分组成 :容器 、算法迭代容器 、算法迭代容器 、算法迭代容器 、算法迭代容器 、算法迭代。 简答题: 简答题: 1. 冒泡排序和快速的优缺 冒泡排序和...
  • 2018 科大讯飞笔试题

    千次阅读 2018-09-08 15:16:25
    题目  华老师的n个学生参加了一次模拟测试,考出来的分数很糟糕,但是华老师可以将分数改为[0,100]的任意值,所以他想知道,如果要使所有人的成绩平均分不少于X分,至少要改动多少人的分数。...

    题目

         华老师的n个学生参加了一次模拟测试,考出来的分数很糟糕,但是华老师可以将分数改为[0,100]的任意值,所以他想知道,如果要使所有人的成绩平均分不少于X分,至少要改动多少人的分数。

    输入:

    第一行一个书T,共T组数据

    接下来对于每组数据:

    第一行两个整数n和X。(1<=n<=1000,0<=X<=100)

    第二行n个整数,第i个数Ai表示第i个学生的成绩(0<=Ai<=100)

    输出:

    共T行,每行一个整数,代表最少的人数。

    样例输入
    2
    5 60
    59 20 30 90 100
    5 60
    59 20 10 10 100
    
    样例输出
    1
    2

    分析思路: 

    对于第一行数据,将它作为两组数据的个数,在输入的时候作为外循环使用,然后将第二/四行的第一个整数作为一个数组的长度n,第二个整数即为平均数avg,那么sum1=n*avg;再将数组中的每个数相加sum2=array[0]+array[1]+...array[4],利用difference=sum1-sum2,再将数组中的元素和100求差,排序,difference从新数组的最后一个元素进行比较,如果大于一个元素,需要改动次数就+1,同时difference就减去新数组的元素。

    代码实现:

    package cn.hjt.practise;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Scanner;
    
    public class Test {
    
    	// 主方法:返回需要改动的数字个数
    	public static int updateNumber(int avg, List<Integer> list, ArrayList<Integer> array2) {
    		int len1 = list.size();
    		int len2 = array2.size() - 1;
    		int sum1 = 0;
    		int sum2 = avg * len1;
    		int number = 0;
    		for (int i = 0; i < len1; i++) {
    			sum1 += list.get(i);
    		}
    		int difference = sum2 - sum1;
    		if (0 > difference)
    			return 0;
    		else {
    			while (difference > 0) {
    				number++;
    				difference -= array2.get(len2);
    				len2 -= 1;
    			}
    		}
    		return number;
    	}
    
    	// 将输入的数组 进行求差 并排序
    	public static List<Integer> difference(List<Integer> list) {
    		List<Integer> tempArray = new ArrayList<>();
    		for (int i = 0; i < list.size(); i++) {
    			tempArray.add(100 - list.get(i));
    		}
    		Collections.sort(tempArray);
    		return tempArray;
    	}
    
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		int num = 0;
    		int avg = 0;
    		List<Integer> list2 = new ArrayList<>();
    		while (scanner.hasNext()) {
    			int number = scanner.nextInt();
    			List<Integer> list = new ArrayList<>();
    			for (int i = 0; i < number; i++) {
    				num = scanner.nextInt();
    				avg = scanner.nextInt();
    				for (int j = 0; j < num; j++) {
    					list.add(scanner.nextInt()); // 将每组数据存放到list中
    				}
    				ArrayList<Integer> array1 = (ArrayList<Integer>) difference(list); // 对list中的元素进行求差排序
    				list2.add(updateNumber(avg, list, array1)); // 将需要次数放入一个集合中
    				list.clear(); // 对存放组合数据的集合进行清空操作
    				array1.clear(); // 对求差排序的集合同时进行清空操作
    			}
    			for (int i = 0; i < list2.size(); i++) {
    				System.err.println(list2.get(i));;
    			}
    		}
    		
    		scanner.close();
    	}
    }
    /*
     *2
      5 60
      59 20 30 90 100
      5 60
      59 20 10 10 100
       */

    运行结果:

    2
    5 60
    59 20 30 90 100
    5 60 
    59 20 10 10 100
    1
    2
    

     

     

    展开全文
  • 科大讯飞笔试题_杀手

    2019-10-06 16:32:00
    题目:  有n个杀手排成一行,每个杀手都有一个不同的编号(编号1-n),在每个夜晚,杀手都会行动,如果某个杀手编号大于他右边的杀手的编号,他就会杀死他右边的杀手,杀手的行动是瞬间的,因此一个人可能某一个...

    题目:

      有n个杀手排成一行,每个杀手都有一个不同的编号(编号1-n),在每个夜晚,杀手都会行动,如果某个杀手编号大于他右边的杀手的编号,他就会杀死他右边的杀手,杀手的行动是瞬间的,因此一个人可能某一个夜晚既杀死了别人,又被别人杀死,例如3,2,1这个顺序,在第一个夜晚2会杀死1,同时,3会杀死2,显而易见,一段时间后,就不会有人被杀系,平安夜就到来了,请问在平安夜之前有多少个夜晚。

    输入:

      输入第一行是一个整数n(1<=n<=100000),表示杀手的数量;

      接下来一行有n个数,是一个1-n的全排列。

    输出:

      输出包好一个整数,表示平安夜之前经历了多少个夜晚;

    样例输入:

      10

      10  9   7  8  6  5  3  4  2  1

    样例输出:

      2

    样例解释:

      杀手额变化为:[10 9 7 8 6 5 3 4 2 1]---->[10 8 4]---->[10],所以答案是2

    思路:

      循环判断,左边的杀手大于右边的杀手即将右边的杀手杀死,同时i将杀死的杀手做以记录,用于下一循环的比较左值, 知道某一循环没有人被杀死,循环结束。

    实现:

     1 #include <bits/stdc++.h>
     2 #include <iostream>
     3 using namespace std;
     4 
     5 struct Node
     6 {
     7     int val;
     8     Node* next;
     9     Node(int vl) : val(vl), next(NULL) {}
    10 };
    11 
    12 int main()
    13 {
    14     int n, num;
    15     cin >> n;
    16     cin >> num;
    17     Node* head = new Node(num);
    18     Node *last = head, *temp;
    19     for (int i = 1; i < n; i++)
    20     {
    21         cin >> num;
    22         temp = new Node(num);
    23         last->next = temp;
    24         last = temp;
    25     }
    26 
    27     int killed = 0, ret = 0;
    28     do
    29     {
    30         killed = 0;
    31         Node *first = head, *second = head->next;
    32         int lastKilled = 0;
    33         while (second != NULL)
    34         {
    35             if (lastKilled != 0)
    36             {
    37                 if (lastKilled > second->val)
    38                 {
    39                     lastKilled = second->val;
    40                     second = second->next;
    41                     delete first->next;
    42                     first->next = second;
    43                     killed++;
    44                 }
    45                 else
    46                 {
    47                     lastKilled = 0;
    48                     first = second;
    49                     second = second->next;
    50                 }
    51             }
    52             else if (first->val > second->val)
    53             {
    54                 lastKilled = second->val;
    55                 second = second->next;
    56                 delete first->next;
    57                 first->next = second;
    58                 killed++;
    59             }
    60             else
    61             {
    62                 first = second;
    63                 second = second->next;
    64             }
    65         }
    66         ret++;
    67     } while (killed > 0);
    68 
    69     cout << ret - 1;
    70 }

     

    转载于:https://www.cnblogs.com/TonvyLeeBlogs/p/9607951.html

    展开全文
  • 题目:  华老师的n个学生参加了一次模拟测验,考出来得得分数很糟糕,但是华老师可以将成绩修改为【0,100】中的任意成绩,所以他想知道,如果要使得所有人成绩的平均分不少于X分,至少改动几个人的分数 ...

    题目:

      华老师的n个学生参加了一次模拟测验,考出来得得分数很糟糕,但是华老师可以将成绩修改为【0,100】中的任意成绩,所以他想知道,如果要使得所有人成绩的平均分不少于X分,至少改动几个人的分数

    输入:

      第一行一个数T,共T组数据(T<=10)

      接下来对于每组数据:

      第一行两个整数n和X(1<=n<=1000,0<=X<=100)

      第二行n个整数,第i个数Ai表示第i个同学的成绩

    输出:

      共T行,每行一个整数,代表最少的人数

    样例输入:

    5 60 

    59 20 30 90 100

    5 60

    59 20 10 10 100

    样例输出:

    1

    2

    思路:

      先对成绩排序,每次修改最小的成绩,看是否满足条件,如果不满足修改第二小的,依次循环。

    实现:

     1 #include <numeric>
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 int MAXSCORE = 100;
     5 
     6 int process(vector<int>& scoreVector,int n,int X) {
     7     int result = 0;
     8     int totalScore = n * X;
     9     int sum = accumulate(scoreVector.begin(),scoreVector.end(),0);
    10     if(totalScore <= sum) {
    11         return 0;
    12     }
    13 
    14     sort(scoreVector.begin(),scoreVector.end());
    15     for (int i = 0; i < scoreVector.size(); ++i) {
    16         int currentScore = scoreVector.at(i);
    17         int diffTotal = totalScore-sum;
    18         int maxChange = MAXSCORE-currentScore;
    19 
    20         if (maxChange >= diffTotal) {
    21             result++;
    22             break;
    23         }else  {
    24             result++;
    25             sum+=maxChange;
    26         }
    27     }
    28 
    29     return result;
    30 }
    31 
    32 
    33 int main()
    34 {
    35     int T,n,X;
    36     cin >> T;
    37     vector<int> scoreVector;
    38     vector<int> result;
    39     while (T>0) {
    40         cin >> n >> X;
    41         int score = 0;
    42         scoreVector.clear();
    43         int temp = n;
    44         while(temp>0) {
    45             scanf("%d",&score);
    46             scoreVector.push_back(score);
    47             temp--;
    48         }
    49         // process
    50         //cout << process(scoreVector,n,X) << endl;
    51         result.push_back(process(scoreVector,n,X));
    52         T--;
    53     }
    54 
    55     for (int i = 0; i < result.size(); ++i) {
    56         cout << result.at(i) << endl;
    57     }
    58 
    59 }

     

    转载于:https://www.cnblogs.com/TonvyLeeBlogs/p/9607998.html

    展开全文
  • 1.给定一个无符号32位整数N,求N的二进制表示法中含1的个数 此题是整数,不考虑负数情况,以下四种方法均可,由于是无符号32位,所以int不符合,要使用long类型 法一:取余,但对于负数不适用 ...
  • 科大讯飞笔试题--吵架问题

    千次阅读 2018-09-09 20:37:59
    * 科大讯飞“吵架”笔试题解析 * * Created by 1443754157@qq.com since 2018年9月9日 下午7:14:52. */ public class Quarrel { public static void main(String[] args) { Quarrel quarrel = new Quarrel()...
  • 输入为一个字符串和这个字符串的长度, 实现的功能:例如字符串LRRLRL,L朝左,R朝右,类似于两个人,面面相对,其中一个人可以把另外一个人踹出队伍,每次只有一对人可以踢出对方,不能很多人一起操作,求最后...
  • 2018科大讯飞笔试题(一)

    千次阅读 2018-03-13 09:36:33
    代码:package face; import java.util.Scanner; public class Test { int a,b,c; int sum = 0; public boolean Sum(int r,int t,int y){ if(a*r&gt;0&amp;&amp;t*b&...=a...
  • 代码:package face; import java.util.Scanner; public class Test2 { // // public static int Money(int [] a) { // int [] a1=a; // int s=0; // for(int a2:a1) { // if(a2==0) { ...// }...
  • 2019/10/9,晚上七点参加的科大讯飞的笔试
  • 描述 有n个杀手排成一行,每个杀手都有一个不同的编号(编号为1-n),在每个夜晚,杀手都会行动,如果某个杀手编号大于他右边的杀手的编号,他就会杀死他右边的杀手,杀手是的行动是瞬间的,因此一个人可能某一个...
  • 科大讯飞单选题此处略过,多选题一共4道,考点分别是: 一道计网题(哪些是TCP服务,哪些是UDP服务); 一道操作系统题(操作系统提供的服务有哪些); 两道Java语言基础题 (下面分别介绍两道Java语言基础题) ...
  • 题目都是基础题,好多不记得了。两个编程题写出来。 单选 多选 填空 编程题 1、对插入排序使用递归的算法实现 2、实现字符串反转: abcd efgh ijkl ---------> ijkl efgh abcd
  • #include&lt;stdio.h&gt; #include&lt;iostream&gt; using namespace std; int main() { int count = 0; int n; cin &gt;&gt; n; const int m = n; int a[3];... ...
  • 科大讯飞2012笔试题

    2013-10-03 12:35:57
    科大讯飞2012笔试题
  • 科大讯飞笔试题目

    千次阅读 2017-08-24 18:09:26
    科大讯飞笔试题目
  • 本人是科大讯飞5年老员工,带领团队进行java开发服务器端开发,平时少不了面试一些新员工,附件是我整理的一些面试题,主要针对校招面试,比较基础。文档中对数据库和linux相关的面试并未讲解,请校招生面试前自行...
  • 2018年科大讯飞春招笔试编程题

    万次阅读 2018-03-14 10:54:10
    科大讯飞2018春招的笔试编程题中,第一题是判断蚊子是否在蚊帐中,比较简单,这里不做说明,本文将简单讲解第二题和重点说明第三题的解法。 第二题 1.题目 2.输入输出及样例 3.思路 这题思路很容易想到,...
  • 科大讯飞测试开发工程师面试总结笔试面试 笔试       科大讯飞的测试开发笔试题分为2大部分:20道选择题和2道编程题。我是线上考的,笔记本开摄像头,手机也要被监控。考察的内容包括...
  • 科大讯飞2021笔试题

    2021-04-17 00:11:22
    来源于读者投稿,作者Angel笔试时间:2020.09.12,19:00——21:00岗位:嵌入式软件开发题型:四道编程题,4*10=40分题目1、定义一个n*m矩阵,找到两个不在同一行同...
  • 科大讯飞2019秋招笔试题

    千次阅读 2018-09-08 15:43:04
    时间:20180907 16:00~17:30 一、改成绩 华老师的n个学生参加了一次模拟测验,考出来的分数很糟糕,但是华老师可以将成绩修改为[0,100]中的任意值,所以他想知道,如果要使所有人的成绩的平均分不少于X分,至少...
  • 科大讯飞2020校招笔试题及答案

    千次阅读 2019-09-12 16:18:19
    第一题: 实现一个加法计数器,要求满足是任意大小的两个整数相加 输入描述:任意大小的两个整数 输出描述:相加的结果 输入示例:123456789987654321 987654321123456789 输出示例:1111111111111111110 ...
  • 科大讯飞笔试编程题2020年秋招

    千次阅读 2019-09-08 22:21:01
    ![第一题 2020秋招刚考试完这次楼主水平不够,之前又没练习过。。。 ](https://img-blog.csdnimg.cn/2019090822205228.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

科大讯飞笔试题