Учитывая массив целых чисел, вы можете изменить любое из числа произвольных положительных чисел, и в конечном итоге весь массив строго возрастает и представляет собой положительные целые числа, и попросил хотя бы изменить несколько номеровИзменение любого элемента массива
вход: 5 1 2 2 3 4
выход: 3
и есть то, что я попробовал каждое число, с тем чтобы уменьшить больше (первое число минус один, потом второе число минус два, третье число минус три)
#include <stdio.h>
int Modify_the_array(int B[],int n);
int max(int a,int b);
int main(int argc,char *argv) {
int before_array[]={1,2,3,4,1,2,3,4,5};
int len=sizeof(before_array[0])/sizeof(before_array);
int b;
b=Modify_the_array(before_array,len);
printf("%d\n",b);
return 0;
}
int max(int a,int b){
return a>b?a:b;
}
int Modify_the_array(int B[],int len) {
int i,b=0,n=1;
int maxsofar,tmp,j;
for (i=0;i<len;i++){
B[i]=B[i]-n;
n++;
}
maxsofar=0;
tmp=0;
for(i=0;i<len;i++) {
for (j=i+1;j<len;j++) {
if (B[j]==B[i]&&B[i]>1) {
maxsofar=max(maxsofar,++tmp);
b=len-maxsofar;
}
}
}
return b;
}
кто рекомендуют есть другое решение этого вопроса, более efficently, кто может дать мне несколько советов, спасибо заранее
Вы не можете отсортировать массив? –
Ваш пример ввода/вывода не ясен для меня. Можете ли вы показать, как вы получили 3 в качестве вывода? –
Я считаю, что это вопрос алгоритма сортировки, заданный преподавателем. Вероятно, хочет видеть, какой лучший алгоритм сортировки студент решает реализовать, считали ли они стабильность, память и временную сложность :) – rurouni88