当前位置:   article > 正文

分治法 python(头歌教学实践平台)_给定实数a和自然数n,求anpython分治

给定实数a和自然数n,求anpython分治

第1关:求一组数据中最大的两个数

任务描述

本关任务:利用分治法求一组数据中最大的两个数和最小的两个数。

编程要求

请在右侧编辑器Begin-End处补充代码,完成本关任务。

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

测试输入:

  1. 10 //数据的总个数
  2. 1 //此行及以下为具体的每个数据
  3. 3
  4. 5
  5. 7
  6. 9
  7. 10
  8. 8
  9. 6
  10. 4
  11. 2

预期输出:

  1. max1=10 max2=9
  2. min1=1 min2=2

  1. #include <stdio.h>
  2. void main()
  3. {
  4. int num,i;
  5. scanf("%d",&num);
  6. int a[num];
  7. for(i=0;i<num;i++)
  8. scanf("%d",&a[i]);
  9. /********** Begin **********/
  10. int max1,min1,max2,min2;
  11. max1=min1=a[0];
  12. for(i=1;i<num;i++){
  13. if(max1<a[i])max1=a[i];
  14. if(min1>a[i])min1=a[i];
  15. }
  16. max2-=1,min2=999;
  17. for(i=1;i<num;i++){
  18. if (max2<a[i]&&a[i]!=max1)max2=a[i];
  19. if(min2>a[i]&&a[i]!=min1)min2=a[i];
  20. }
  21. printf("max1=%d max2=%d\nmin1=%d min2=%d",max1,max2,min1,min2);
  22. /********** End **********/
  23. }


第2关:求一组数据的和

任务描述

本关任务:利用分治法求一组数据的和。

编程要求

请在右侧编辑器Begin-End处补充代码,完成本关任务,注意需要学生自己获取输入数据再进行操作。

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

测试输入:

  1. 10 //数据的总个数
  2. -5 //此行及以下为具体的每个数据
  3. 5
  4. 10
  5. 99
  6. 100
  7. 30
  8. 60
  9. 98
  10. -10
  11. -1

预期输出:

分治法求出数组元素的和为:386

开始你的任务吧,祝你成功!

  1. #include "stdio.h"
  2. /********** Begin **********/
  3. int main()
  4. {
  5. int num,i,s=0;
  6. scanf("%d",&num);
  7. int a[num];
  8. for(i=0;i<num;i++)
  9. {
  10. scanf("%d",&a[i]);
  11. s+=a[i];
  12. }
  13. printf("分治法求出数组元素的和为:%d",s);
  14. return 0;
  15. }
  16. /********** End **********/


第3关:找出数组中第 k 个小的元素

任务描述

本关任务:对于给定的 n 个元素的数组a[0:n-1],要求从中找出第 k 小的元素。

编程要求

请在右侧编辑器Begin-End处补充代码,完成本关任务,注意需要学生自己获取输入数据再进行操作。

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

测试输入:

  1. 10 5 //表示给定10(n)个元素的数组,从中找出第5(k)小的元素
  2. -34 //此行及以下为具体的每个数据
  3. 95
  4. -50
  5. 67
  6. 73
  7. 81
  8. -38
  9. 10
  10. -11
  11. 70

预期输出:

第5小的元素是10

开始你的任务吧,祝你成功!

  1. #include <stdio.h>
  2. /********** Begin **********/
  3. void BubbleSort(int *arr, int size)
  4. {
  5. int i, j, tmp;
  6. for (i = 0; i < size - 1; i++) {
  7. for (j = 0; j < size - i - 1; j++) {
  8. if (arr[j] > arr[j+1]) {
  9. tmp = arr[j];
  10. arr[j] = arr[j+1];
  11. arr[j+1] = tmp;
  12. }
  13. }
  14. }
  15. }
  16. int main()
  17. {
  18. int num,i,j;
  19. scanf("%d%d",&num,&j);
  20. int a[num];
  21. for(i=0;i<num;i++)scanf("%d",&a[i]);
  22. BubbleSort(a,num);
  23. printf("第%d小的元素是%d",j,a[j-1]);
  24. return 0;
  25. }
  26. /********** End **********/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/82076
推荐阅读
相关标签
  

闽ICP备14008679号