首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使代码更快地适应时间限制?

如何使代码更快地适应时间限制?
EN

Stack Overflow用户
提问于 2021-03-07 23:26:13
回答 1查看 105关注 0票数 0

我试图在spoj https://www.spoj.com/problems/PALIN上提交这段代码,它要求查找给定数字n的下一个最小回文,但是由于这段代码的工作速度很慢,它超过了时间限制(2-9秒)。还有其他方法可以更快地解决这个问题吗?

第一行包含整数t,测试用例数。在下面的t行中给出整数K。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <bits/stdc++.h>
using namespace std;

 int main() {
    long long int t,k; string k2,k1;
    cin>>t;
    while(t--){
        cin>>k;k++;
        do{
            k1=to_string(k);
            k2=k1;
            reverse(k1.begin(), k1.end());
            if(k1==k2){cout<<k<<endl;}
            k++;
        }while(k1!=k2);
    }
    return 0;
}

示例输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2
808
2133

示例输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
818
2222
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-07 23:29:08

最明显的事情是停止复制和反转字符串。相反,将第一个字符与最后一个字符进行比较,然后再将第二个字符与第二个字符进行比较,依此类推。

另外,你为什么要使用字符串呢?字符串既复杂又昂贵。您正在执行的操作完全可以在数字上完成。

最后,考虑像"473X“这样的数字。所有这些都不可能是回文。你不需要测试所有的十个。如果你要看以"47“开头的四位数字,只有一个是回文--那你为什么要检查所有的100个数字呢?

在编写代码来解决这样的问题之前,请仔细考虑将要使用的算法,并确保没有任何明显的浪费精力。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66525751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文