Arrays 从该索引开始计算连续子阵列
我有一个数组a,需要一个与a大小相同的数组B,其中B[I]表示从a[I]开始的连续子数组的长度,其中所有元素都小于或等于a[I] 范例 输出 说明: 对于[2]=4,有一个元素为{4,2,4}的子数组;对于[5]=5,有一个元素为{5,1}的子数组;对于[7]=6,有一个元素为{6}的子数组复杂性:OnArrays 从该索引开始计算连续子阵列,arrays,algorithm,maxlength,sub-array,Arrays,Algorithm,Maxlength,Sub Array,我有一个数组a,需要一个与a大小相同的数组B,其中B[I]表示从a[I]开始的连续子数组的长度,其中所有元素都小于或等于a[I] 范例 输出 说明: 对于[2]=4,有一个元素为{4,2,4}的子数组;对于[5]=5,有一个元素为{5,1}的子数组;对于[7]=6,有一个元素为{6}的子数组复杂性:On 找不到任何问题。似乎如果你复制粘贴了你的家庭作业,并想要一个答案,你可以复制粘贴并提交作为你的家庭作业。这种问题在这里不太受欢迎。尝试添加您尝试过的内容以及失败的原因。另外,我已经把这个问题作为
找不到任何问题。似乎如果你复制粘贴了你的家庭作业,并想要一个答案,你可以复制粘贴并提交作为你的家庭作业。这种问题在这里不太受欢迎。尝试添加您尝试过的内容以及失败的原因。另外,我已经把这个问题作为子问题解决了。
A={1,3,4,2,4,5,1,6}
B={1,1,3,1,1,2,1,1}
You can apply below algorithm to get the answer for your problem:-
Array B =[]; //initialize blank array
for (int i=0; i< A.length(); i++)
{
j=i;
length=1;
while(i< A.length()-1)
{
j++;
if(A[j]<=A[i])
length++;
else
break;
}
B[i]= length;
}
Print B // This will give you the similar array as of Array "A".
#include <iostream>
#include <fstream>
using namespace std;
#define max 10000
int main(int argc, const char * argv[]) {
ifstream input("/Users/appleuser/Documents/Developer/xcode projects/SubArrayCount/SubArrayCount/input.in");
int n, arr[max], after[max]={0};
input >> n;
for (int i=0; i<n; i++)
input >> arr[i];
for (int i=n-1;i>=0;i--)
for (int j=i+1;j<n&&arr[j]<=arr[i];j+=after[j]+1)
{
if (arr[j]==arr[i])
{
after[i]++;
break;
}
after[i]+=after[j]+1;
}
for (int i=0; i<n; i++)
cout << after [i] << " ";
cout << endl;
return 0;
}