检查 number 是否为 C++ 中的序列周期
我需要检查 number 是否是一个序列周期。
示例:{ 1, 3, 1, 4, 2, 1, 3, 1, 4, 2, 1, 3 }
周期为 5 和 10。基期为 5,因为它是最小周期。
#include <iostream>
#include <vector>
int p=0;
int period(std::vector<double>v , int x)
{
int p = 0;
for (int i = 1; !p && i < v.size(); i++)
{
int j = 0;
while (j < v.size() - i && v[j] == v[j + i]) ++j;
if ( j + i == v.size() ) p = i;
}
if(p!=x)
return false;
return true;
}
int main()
{
std::vector<double> v = { 1, 3, 1, 4, 2, 1, 3, 1, 4, 2, 1, 3 };
std::cout << period( v,10 ) << '\n';
}
我的代码检查数字是否等于基期。我如何检查它是否等于任何周期并在这种情况下返回 true?
I need to check if number is a period of sequence.
EXAMPLE: { 1, 3, 1, 4, 2, 1, 3, 1, 4, 2, 1, 3 }
Periods are 5 and 10. Base period is 5 because it is the smallest period.
#include <iostream>
#include <vector>
int p=0;
int period(std::vector<double>v , int x)
{
int p = 0;
for (int i = 1; !p && i < v.size(); i++)
{
int j = 0;
while (j < v.size() - i && v[j] == v[j + i]) ++j;
if ( j + i == v.size() ) p = i;
}
if(p!=x)
return false;
return true;
}
int main()
{
std::vector<double> v = { 1, 3, 1, 4, 2, 1, 3, 1, 4, 2, 1, 3 };
std::cout << period( v,10 ) << '\n';
}
My code checks if number is equal to base period. How could I check if it is equal to any of the periods and in that case return true?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
该函数可以通过以下方式定义
这是一个演示程序。
程序输出是
The function can be defined the following way
Here is a demonstration program.
The program output is
您可以尝试以模 (%) 周期的循环来检查您的答案,例如最小周期,在本例中为 5。
You could try checking your answer in rotations of modulo(%) period, as in the smallest period, which in this case is 5.