ACM14题
来源:互联网 发布:网络麻将群主违法吗 编辑:程序博客网 时间:2024/06/16 07:55
看到示例,没看出来具体什么意思,只是知道了先输入数字的行数,下面就是每行输入两个数字。有道翻译了以后,看了很长时间才明白,是先把数字颠倒相加,再颠倒回来。
我的思路:有两种解决办法:1.按照原文的具体意思,利用繁琐的办法,老老实实颠倒两次,中间步骤是再加在一起,最后输出。2.不用颠倒,两个数最左边第一位相加,如果不超过9,保留下来,如果超过9,就把十进制位上的数加在左边第二个数上,然后依次进行。
遇到的困难:首先,我采取的是简便方法,但是遇到了很多难题,首先就是数字的分离问题,不过这个解决了,定义char型的数组或者我们学过的string类型的都可以,但是我做这道题的时候没有这么明确地思路,想着是把一行的数输入一个string类的变量里,所以想到了要用到前面题目里getline的输入,这个地方还是害怕用错,但是现在想想,可以定义两个char类型的数组,然后逐个相加,超过9的向右边进一位。我改变了用简便方法,用了比较麻烦的两次数字颠倒。
代码:#include<iostream>
#include<vector>
using namespace std;
int main()
{
int i=0,k,b,c,d,s,j=0;
vector<int>a;
cin>>b;
while(i<2*b)
{
cin>>s;
a.push_back(s);
i++;
}
i=0;
while(i<2*b)
{
c=0;
while(a[i]!=0)
{
d=a[i]%10;
a[i]=a[i]/10;
c=c*10+d;
}
a[i]=c;
i++;
}
i=0;
while(i<2*b-1)
{
a[j]=a[i]+a[i+1];
i++;
i++;
j++;
}
i=0;
while(i<b)
{
c=0;
while(a[i]!=0)
{
d=a[i]%10;
a[i]=a[i]/10;
c=c*10+d;
}
a[i]=c;
i++;
}
i=0;
while(i<b)
{
cout<<a[i]<<endl;
i++;
}
return 0;
}
总结:代码繁琐复杂,也遇到了各式各样的问题,用了挺长时间才把代码修改好,当时没有多想,采取了比较麻烦不用高级算法的办法,其实这个代码还有很多的不足,没用vector里面的release算法,所以导致了复杂。以后会注意,思路和方法同样重要,这是一个教训。当然,人总会有想的不全面的时候,人总不是十全十美的,认识到了就是收获,希望下次会有更大进步,会努力的。
- ACM14题
- ACM14
- 南阳理工acm14 会场安排问题(简单贪心题+排序)
- 题
- 题
- 题
- 题
- 题
- 题
- 题
- 题
- 题
- 题
- 题
- 题
- 题
- 题
- 题
- 操作系统中关于竞争和死锁的关系下面描述正确的是
- Leetcode-88. Merge Sorted Array
- 深度学习小白学习之——前言
- Java字节码操纵技术
- 运用Python的webbrowser定时打开特定网页
- ACM14题
- 【数据结构】基本概念
- Subject: [android-porting] Mouse cursor:issue with dispatchPointer
- FFMPEG常用命令
- 解决github :error: failed to push some refs to 问题
- iOS遍历打印所有子视图
- opencv2与opencv的不同
- 【数据结构_树_Tree_0981】统计利用二叉树存储的森林中树的棵数
- STM32基础(三)----DMA总结笔记