查找区间中回文数的算法

问题描述 投票:1回答:1

我目前的任务是编写一个程序,该程序根据<2;36>的间隔计算任意碱基的回文数。问题是我的解决方案的时间复杂度充其量只有O(n^2),也就是说,如果我很坦率,那真的很慢。

到目前为止,我已经尝试过简单的解决方案,例如将所有数字从区间转换为所需的基数,将数字转换保存为数组,然后逐个检查每个元素。

这是我到目前为止所拥有的:

int isTrue = 1;
int arr[64];

while(n > 0)
{
   arr[counter] = n % base;
   n = n / base;
   counter++;
}

for(int i = 0; i < counter; i ++)
{
   if(arr[i] != arr[counter - i - 1])
   {
      isTrue = 0;
      break;
   }
}

无论如何都不好,但是对于基本测试确实有效。问题是我目前正在尝试解决奖金更大的奖金一。

用大得多的数字表示跨越数十亿个数字的间隔,例如,输入之一是:

c 15 62103360044 155888062462
Result : 123502

[c是程序应执行的任务(l的选项列出了所有在奖金测试中未出现的回文),15为基数,另外两个数字为区间的极限。] >

我应该在一秒钟之内算出五个这样的间隔的回文,老实说,我很受困扰。

[我们将不胜感激,如果我对问题的格式有误或答案太过抱歉,这是我的第一次,这是我第一次在这里提出问题。

我目前的任务是编写一个程序,该程序根据<2; 36>的间隔计算任意碱基的回文数。问题是我的解决方案的时间复杂度最多为O(n ^ 2),并且...

c optimization palindrome base
1个回答
0
投票
  • 更快地执行回文检查是次要

    的优化。最初,我什至会使用java的数字进行String转换。
© www.soinside.com 2019 - 2024. All rights reserved.