0
已解决
何冯成
中级光能
中级光能
啊啊啊,4941真难写。
怎么办,凉拌,炒鸡蛋,好吃又好拌。
本人0分代码:
#include<iostream>
using namespace std;
int d[110000],x[110000],s=0,sum[101000];
int main(){
int a,b;
cin>>a>>b;
for(int i=1;i<=a;i++){
cin>>d[i];
}
for(int i=1;i<=b;i++){
cin>>x[i];
}
if(a>b){
b=a;
a=b;
}
else {
a=b;
b=a;
}
for(int i=1;i<=a;i++){
sum[i]=d[i]+x[i];
}
for(int i=1;i<=a;i++){
cout<<sum[i]<<" ";
}
return 0;
}
啊啊啊
求大佬指导一下(两下也可以)嘻嘻
求思路啊啊啊
何冯成在2020-05-02 17:51:21追加了内容
@龙舟
0
已采纳
黄子扬
初级天翼
初级天翼
让用vector是因为向量是动态数组不用管数组大小吧?于是我用了map(滑稽
这两个都不需要预设长度,你可以理解为无限长的数组,但是占得空间小,这题如果用数组就可能爆了?
(反正我也没试过,自从很久之前知道vector和map以后写稍微正经一点的题目我就没用过数组了
vector<数据类型>变量名称/map<下标的数据类型,存储值得数据类型>变量名称
虽然这两个STL都自带一些自身的函数,但不容易习惯使用,你可以直接像数组那样直接输入
vector直接当作数组用,数组能干啥,它就能干啥,而且它不越界
map更能直接当作数组用,数组有些不能干的,它依旧能干:
因为可以自定义下标的数据类型,于是你可以
1.map<int,int>a; a[-1]=1;负数下标
2.map<string,int>a; a["abc"]=1;字符串下标
3. ··· ··· 诸如此类的很多
我在写猪国杀的时候拿map存手牌就认为很直观方便,这就是C++ STL的优势所在
(然而写栈、队列的时候STL 就很鸡肋了
以下是题目部分:
1.map初始化加数和和(滑稽
map<int,int>s1;
map<int,int>s2;
map<int,int>s3;
当然,如果你想严格按照题目
改成
vector<int>s1;
vector<int>s2;
vector<int>s3;
即可,后面没有任何影响
2.像数组那样读入
for(int i=1;i<=m;i++)
scanf("%d",&s1[i]);
for(int i=1;i<=n;i++)
scanf("%d",&s2[i]);
3.用一个k存位数
k=max(m,n);
4.相加,处理进位
for(int i=1;i<=k;i++)
{
s3[i]+=s1[i]+s2[i];
s3[i+1]+=s3[i]/10;
s3[i]%=10;
}
因为是逆序相加,所以进位往i+1位加
5.如果最高位的下一位仍有数,位数自增1
例如999+999=1998 多了一位
if(s3[k+1]) k++;
由于是加法,所以不会存在两数相加后位数多了两位
6.像数组那样输出
for(int i=1;i<=k;i++)
printf("%d ",s3[i]);
至此完成
黄子扬在2020-05-03 18:43:33追加了内容
那些思路或代码是数字的同学就不要回答了,如果数组能完成还标一个STL是为了显现数据水吗
黄子扬在2020-05-03 18:45:32追加了内容
顺便谢谢您送来的经验
大数相加2我也一同切了
0
0
0