我需要檢查數字是否是一段序列。
示例:{ 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?
uj5u.com熱心網友回復:
該函式可以通過以下方式定義
bool period( const std::vector<double> &v , size_t n )
{
bool is_period = false;
if ( n < v.size() )
{
size_t j = 0;
while ( j < v.size() - n && v[j] == v[j n]) j;
is_period = j n == v.size();
}
return is_period;
}
這是一個演示程式。
#include <iostream>
#include <vector>
bool period( const std::vector<double> &v, size_t n )
{
bool is_period = false;
if (n < v.size())
{
size_t j = 0;
while (j < v.size() - n && v[j] == v[j n]) j;
is_period = j n == v.size();
}
return is_period;
}
int main()
{
std::vector<double> v = { 1, 3, 1, 4, 2, 1, 3, 1, 4, 2, 1, 3 };
if (period( v, 5 )) std::cout << 5 << " is a period\n";
if (period( v, 10 )) std::cout << 10 << " is a period\n";
}
程式輸出為
5 is a period
10 is a period
uj5u.com熱心網友回復:
您可以嘗試在模(%)周期的旋轉中檢查您的答案,如最小周期,在本例中為 5。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/441476.html
