首页 > 编程语言 >计算机导论与程序设计基础限时测试二和作业二

计算机导论与程序设计基础限时测试二和作业二

时间:2024-08-16 09:25:34浏览次数:8  
标签:10 限时 num1 num2 int 导论 -- 字符串 程序设计

A : 最大子数组和

题目描述

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。

输入格式

共 2 行数。

第一行为数组长度n。

对于测试点 1-12:0<n≤1000

对于测试点 13-14:10000<n≤20000

对于测试点 15:100000<n≤200000

第二行为 n 个数 m。

对于测试点 1-12:−1000≤m≤1000

对于测试点 13-15:−10000≤m≤10000

输出格式

一个数,为最大的子数组和。

Hint

观察数据范围 n 可以发现题目的分数区间分为了三部分

时间复杂度为 O(n3) 时可以通过测试点 1-12

时间复杂度为 O(n2) 时可以通过测试点 1-14

时间复杂度为 O(n) 时可以通过测试点 1-15

测试点 15 仅占 1 分,无需在此浪费太长时间,喜欢挑战的同学可以花一些心思优化。

可能用到的关键词:前缀和,动态规划

完整答案代码

#include<stdio.h>
int max(int m,int n)
{
	return m>n?m:n;
}
int main()
{
	int a;
	scanf("%d",&a);
	int x[a];
	int i;
	for(i=0;i<a;i++)
	{
		scanf("%d",&x[i]);
	}
	int sum[1000001];
	int maxn;
	sum[0]=x[0];
	maxn=sum[0];
	for(i=1;i<a;i++)
	{
		sum[i]=max(sum[i-1]+x[i],x[i]);
		maxn=max(sum[i],maxn);
	}
	printf("%d",maxn);
}

B : 字符串乘法

题目描述

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

输入格式

共 4 行数。

第一行为 num1 长度n

第二行为字符串 num1

第三行为 num2 长度m

第四行为字符串 num2

输出格式

一个字符串,为两个字符串的乘积

数据范围

对于数据点 1,2:1<n,m<5

对于数据点 3,4,5:5≤n,m≤10

对于剩余数据点:10≤n,m≤20

完整答案代码

#include<stdio.h>
int main()
{
	int n,m;
	char num1[1001],num2[1001];
	scanf("%d\n%s%d\n%s",&n,num1,&m,num2);
	int a[2002]={0};
	int i,j;
	for(i=0;i<n;i++){
		for(j=0;j<m;j++){
			a[i+j+1]+=(num1[i]-'0')*(num2[j]-'0');
		}
	}
	for(i=n+m-1;i>0;i--){
		if(a[i]>9){
			int t;
			t=a[i]%10;
			a[i-1]+=a[i]/10;
			a[i]=t;
		}
	}
	if(a[0]==0){
		for(i=1;i<n+m;i++){
			printf("%d",a[i]);
		}	
	}else{
		for(i=0;i<n+m;i++){
			printf("%d",a[i]);
		}
	}
	return 0;
}

A : 谁笑到最后

题目描述

我们规定,当两个数a和b进行“战斗“时,数值大的数胜利,而数值小的数移出数组,如果两个数大小相同,则同时移出数组。

给出n∗m个正整数。

现在让这m组中的n个正整数进行挑战赛,从第 1 个数开始向后面的数两两进行“战斗”,胜者将拥有和下一个数战斗的资格,直到这n个数只剩下 1 个或 0 个(决赛时大小相同)为止。

然后再让这m组中的胜者按组编号从小到大排序,从第 1 个数开始往后依次“战斗”,直到这些数只剩下 1 个或 0 个(决赛时大小相同)为止。

输出胜利的数,如果没有胜利的数,则输出 -1

输入格式

第 1 行为m,n (0<n<1000,0<m<100),代表共有m组,每组n个数。

接下来有m行,每行有n个正整数,均小于 10000。

输出格式

1 个整数,如果有胜利的数则输出该数,如果没有胜利的数,则输出 -1

完整答案代码

#include<stdio.h>
int main()
{
	int m,n;
	scanf("%d%d",&m,&n);
	int a[m][n];
	int i,j;
	
	for(i=0;i<m;i++){
		for(j=0;j<n;j++){
			scanf("%d",&a[i][j]);
		}
	}
	for(i=0;i<m;i++){
		for(j=0;j<n-1;j++){
			if(a[i][j]>a[i][j+1]){
				a[i][j+1]=a[i][j];
			}else if(a[i][j]==a[i][j+1]){
				a[i][j+1]=-1;
			}
		}
	}
	for(i=1;i<m;i++){
		if(a[i][n-1]<a[i-1][n-1]){
			a[i][n-1]=a[i-1][n-1];
		}else if(a[i][n-1]==a[i-1][n-1]){
			a[i][n-1]=-1;
		}
	}
	printf("%d",a[m-1][n-1]);
	return 0;
 } 

B : 字符串浮点加法

题目描述

给定两个以字符串形式表示的非负数 num1 和 num2,这两个数不一定是整数,返回 num1 和 num2 的和,它们的和也表示为字符串形式。

输入输出的数都应符合以下规则:

  • 如果该数是整数,则字符串中不含小数点和小数部分。
  • 如果该数并非整数,则小数部分最后一位不能是 0。

输入格式

共 4 行数。

第一行为 num1 长度n

第二行为字符串 num1

第三行为 num2 长度m

第四行为字符串 num2

输出格式

一个字符串,为两个字符串的和。

数据范围

对于数据点 1,2:1<n,m<5

对于数据点 3,4:5≤n,m<10

对于数据点 5,6,7:10≤n,m<15

对于剩余数据点:15≤n,m≤25

完整答案代码

#include<stdio.h>

int main()
{
	int n,m;
	char n1[10001],n2[10001];
	scanf("%d\n%s%d\n%s",&n,n1,&m,n2);
	int l1=n;
	int l2=m;
	int z1[10001]={0},z2[10001]={0};
	int f1[10001]={0},f2[10001]={0};
	int zl1=0,zl2=0;
	int fl1=0,fl2=0;
	int i,j,k;
	for(i=0;i<=l1;i++){
		if(n1[i]=='\0'){
			break;
		}
		if(n1[i]=='.'){
			break;
		}
		z1[i]=n1[i]-'0';
		zl1++;
	}
	for(i=0;i+zl1+1<l1;i++){
		f1[i]=n1[i+zl1+1]-'0';
		fl1++;
	}
	for(i=0;i<=l2;i++){
		if(n2[i]=='\0'){
			break;
		}
		if(n2[i]=='.'){
			break;
		}
		z2[i]=n2[i]-'0';
		zl2++;
	}
	for(i=0;i+zl2+1<l2;i++){
		f2[i]=n2[i+zl2+1]-'0';
		fl2++;
	}
	int fl3=1,zl=1;
	int fl=(fl1>fl2)?fl1:fl2;
	int f[10001]={0},z[10001]={0};
	
	for(i=fl-1,j=fl-1;i>0&&j>0;i--){
		f[j]+=f1[i]+f2[i];
		if(f[j]>9){
			int t;
			t=f[j]%10;
			f[j-1]+=f[j]/10;
			f[j]=t;
		}
		j--;
		fl3++;	
	}
	f[0]=f[0]+f1[0]+f2[0];
	if(f[0]>9){
		int t;
		t=f[0]%10;
		z[0]+=f[0]/10;
		f[0]=t;
	}
	for(i=zl1-1,j=zl2-1,k=0;i>=0||j>=0;i--,j--){
		if(i>=0&&j>=0){
			z[k]+=z1[i]+z2[j];
		}else if(i>=0&&j<0){
			z[k]+=z1[i];
		}else if(i<0&&j>=0){
			z[k]+=z2[j];
		}
		if(z[k]>9){
			int t;
			t=z[k]%10;
			z[k+1]+=z[k]/10;
			z[k]=t;
		}
		k++;
		zl++;
	}
	int o=fl3;

	for(i=fl3-1;f[i]==0&&i>=0;i--){
		o--;
	}
	
	if(o==0){
		if(z[zl-1]==0){
			for(i=zl-2;i>=0;i--){
				printf("%d",z[i]);
			}
		}else{
			for(i=zl-1;i>=0;i--){
				printf("%d",z[i]);
			}
		}
	}else{
		if(z[zl-1]==0){
			for(i=zl-2;i>=0;i--){
				printf("%d",z[i]);
			}
		}else{
			for(i=zl-1;i>=0;i--){
				printf("%d",z[i]);
			}
		}
		printf(".");
		for(i=0;i<o;i++){
			printf("%d",f[i]);
		}
	}
	return 0;
}

如能打赏,不胜感激[叩谢]。

标签:10,限时,num1,num2,int,导论,--,字符串,程序设计
From: https://blog.csdn.net/Water_Star1/article/details/141246749

相关文章

  • 山东大学计算机导论与程序设计基础实验1-4
    A:实验1.1标准数学函数使用实验要求1.在你所创建的工程文件中,编程熟悉C程序的基本框架,以及C语言提供的标准数学函数,并按一定的格式输出程序的执行结果;Tips:我该怎么输出我的结果?在写完程序主题之后,使用printf()函数或cout来输出题目要求的结果。注意:不要在......
  • 蓝桥杯2016 C/C++程序设计 B组
    抽签//X星球要派出一个5人组成的观察团前往W星。//其中://A国最多可以派出4人。//B国最多可以派出2人。//C国最多可以派出2人。//....//那么最终派往W星的观察团会有多少种国别的不同组合呢?//下面的程序解决了这个问题。//数组a[]中既是每个国家可以派出的最多的名......
  • 计算机导论与程序设计基础实验5-9
    A:实验5字符串的输入输出题目描述利用循环结构连续调用scanf(”%[^\n]”,str)输入多个字符串,并使用printf(),将str输出。根据str的输出结果,观察是否在输入一个字符串后,后续的scanf(”%[^\n]”,str)中,会将缓冲区中残留的回车换行符读入到str中。提示:利用格式scanf(”%[......
  • C程序设计(安徽专升本3.2基本数据类型)
    一、数据类型的分类 在本章节我们之讲解基础的数据类型,因为后续的数据类型将会单独对此讲解,常考的为基本数据类型,数组,函数,指针这几种类型!其它类型作为了解,认识即可二、整型类型此处对整数类型的讲解排除字符型和布尔型,它们单独拉出讲解,且我不喜欢废话讲解,我直接列表加代码......
  • 石家庄铁道大学第五届程序设计竞赛
    链接:https://ac.nowcoder.com/acm/contest/66307#question\(\\\)AnA-SOULEllienFanF指定每一位的进制,求\(A+B\)的值,直接模拟即可,复杂度\(O(max(n,\m))\),\(n,m\)为字符串的长度。点击查看代码#pragmaGCCoptimize("unroll-loops,Ofast")#include<bits/stdc++.h......
  • 《python语言程序设计》2018版第6章第47题编写显示两个棋盘,我没有按要求写定义
    一、我的奇幻结果大小棋盘的def的函数代码问题分析:原来的坐标加入了总坐标作为参考坐标配合使用drawChessboard(-6,-6,sizeGird=3)drawChessboard(16,16,sizeGird=10)大小棋盘的def的函数代码defdrawChessboard(startX,startY,sizeGird):turtle.spee......
  • 《python语言程序设计》2018第7章第1题 第2次刷题 创建一个Rectangle类,包括长、宽数据
    uml类图到现在不会弄。此处为main的位置,不是rectangle类的代码。importmathdefmain():width_int=eval(input("EnterRectangle#1width:"))height_int=eval(input("EnterRectangle#1height:"))a=exCode07.Rectangle(width_int,height......
  • Python之程序设计策略
    这是《Python入门经典以解决计算问题为导向的Python编程实践》106-109页的内容程序设计策略问题的实质是什么让问题真实化编程之前先思考。简化(分治)停下来思考放松一下:让自己休息一下坚持有助于解决问题,所以不要轻易放弃。同时解决多任务有时候容易分心。找不......
  • 选择结构程序设计(2/3)
    目录​编辑条件运算符1.条件运算符的一般形式2.作用条件运算符首先来用if语句实现对两个数中最大值的求解,代码如下:if(a>b){ max=a;}else{ max=b;}上面的代码可以用条件运算符“?:”来简化:max=(a>b)?a:b;1.条件运算符的一般形式表达式1?表达式2:......
  • 【C语言(谭浩强)】程序设计与 C 语言
    博客主页:小蜗系列专栏:C语言(谭浩强)版关注博主,后期持续更新系列文章如果有错误请大家批评指出,我会及时修改感谢大家点赞......