Какова временная сложность печати массива символов в C ?

#c #arrays #string #char #cout

#c #массивы #строка #обуглить #cout

Вопрос:

Поэтому я пробовал базовую программу для печати префиксных подстрок строки (подстроки «»,»a»,»ab»,»abc» для строки «abc»), и она работала нормально:

 void PrefixSubstrings(string s, int n){ coutlt;lt;"sub = "lt;lt;endl; // assumes empty subst as subst as well  char sub[n 1]; for(int j=0;jlt;n;j  ){  sub[j]= s[j] ;   sub[j 1]=0 ;  coutlt;lt;"sub = "lt;lt;sublt;lt;endl; }}    

Но потом я подумал о его временной сложности , это может показаться O(n) ,но потом я заметил, что со стороны

coutlt;lt;»sub = «lt;lt;sublt;;

Я не уверен, но требуется ли дополнительное O(n) для печати массива символов с использованием вышеуказанного метода и эффективного выполнения моей программы O(n^2) ?

Комментарии:

1. char sub[n 1]; — Это недопустимый C . Массивы в C должны иметь размер, обозначаемый выражением во время компиляции, а не значением во время выполнения. Вместо: std::vectorlt;chargt; sub(n 1);

2. Да, его сложность будет квадратичной по длине строки.

3. @WaisKamal Я искал в сети, но не смог найти способ печатать массив символов в постоянное время . Итак , если я буду использовать строку вместо символа для хранения подстрок и печати, будет ли это происходить в постоянное время? Или есть какой-либо другой способ распечатать его в постоянное время ?

4. Почему вы ожидаете, что для печати строки потребуется одинаковое количество времени, независимо от того, сколько в ней символов?

5. Как вы можете печатать n символов за постоянное время? Это означало бы пропуск некоторых символов. Даже если вы используете строку, она будет выводить по одному символу за раз за кулисами.