0
我需要根据时间复杂度来优化代码。空间复杂性没有问题。我正在寻找更好的逻辑来在最短的时间内解决这个问题。随时间变化的代码优化
问题是
输入n和d在每天
正天数-a [n]的份额值的
的利润D-数-b [d]每个利润的值
输出
每d利润显示
1)两个值
或
2)-1
1)二值: - 每一天股票的价值可能会也可能不会发生变化,但如果发生变化,股票的增加变化必须等于利润b [d]。打印索引(从1开始),其中利润与利润完全相同并且索引之间的差异最小。
2)-1,如果不可能
例如
input
4 2
1 2 3 5
3 8
输出
2 4
-1
代码:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
double i,j,k,s=100000000,p,q,flag;
double n,d;
cin>>n>>d;
vector<double> a(n);
vector<double> b(d);
for(i=0;i<n;++i){
cin>>a[i];
}
for(i=0;i<d;++i){
cin>>b[i];
}
for(k=0;k<d;++k)
{ flag=9;
p=q=0;
for(i=0;i<n-1;++i){
for(j=i+1;j<n;++j){
if((a[j]-a[i])==b[k]){
if(s>(j-i)){
s=j-i;
p=i+1;
q=j+1;
flag=1;
break;
}
}
}
}
s=100000000;
if(flag!=9)
cout<<p<<" "<<q<<"\n";
else
cout<<"-1\n";
}
return 0;
}