2018-03-09, 07:44 PM
|
#4 (permalink)
|
註冊會員
|
這是我後還寫的版本,感覺是可以用,不過方法比較像是暴力解法,之後要用到大量比對的時候猜想可能速度會太慢因此才來問看看有沒有什麼特別的演算法之類。
-------------------------------------------
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int song[] = {1, 3, 5, 5, 7, 9, 11, 9, 7};// Put the real song fftw result here
int num;
int *a;// used to store fftw of recorded melody
cout << "Enter a number:";
cin >> num;
a = new int[num];
cout << "Please Enter the Number List:";
for(int i =0; i < num; i++)
{
cin >> a[i]; }
int x = a[0];
int yn = 0;
int r[num];
int temp = 0;
for(int i =0; i < num; i++)
{
r[i] = a[i] - x; }
for(int i =0; i <= sizeof(song)/sizeof(int) - num; i++)
{
for(yn = 0; yn < num; yn++)
{
temp = song[i + yn] - song[i] - r[yn];
if( temp > 1 || temp < -1 )//誤差半音以內沒關係
break; }
if(yn == num)
break; }
if(yn == num)
cout << "yes"; else
cout << "no"; return 0; }
此帖於 2018-03-09 08:13 PM 被 alanniok 編輯.
|
|
|
送花文章: 75,
收花文章: 17 篇, 收花: 22 次
|