Вторник, 05.08.2025, 20:14
Главная Регистрация RSS
Приветствую Вас, Заглянувший
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Помогите с задаей) Очень надо
sport-visoky-7Дата: Среда, 09.11.2011, 01:30 | Сообщение # 1
Сообщений: 2
Репутация: 0
Статус: Offline
. Массив целых чисел х[0], x[1], ... x[m+n-1] рассматривается как соединение двух его отрезков:
• начала х[0],...,х[m-1] длины m
• и конца х[m],...,х[m + n -1] длины n.
Не используя дополнительных массивов, переставить начало и конец

Java задача*
FreemanДата: Среда, 09.11.2011, 02:41 | Сообщение # 2
Сообщений: 43
Репутация: 104
Статус: Offline
Вот процедурка, циклически сдвигающая часть [i0, i1) массива perm[] на s.
В нашем случае, i0=0, i1=m+n, s=n, perm=x.


protected void shift(final int i0, final int i1, int s){
. final int size = i1-i0;
. if( size < 2 ) return;
. s %= size;
. if( s == 0 ) return;
. final int g = CIMath.gcd(s, size);//>0. Это НОД, придётся сделать самому.
. final int t = size/g;
. for(int n=0; n < g; n++){
. . int k = i0+n;
. . int m = perm[ k ];
. . for(int i=1; i < t; i++){
. . . int kk = k-s;
. . . if( kk < i0 ) kk+=size;
. . . if( i1 <= kk ) kk-=size;
. . . perm[ k ] = perm[ kk ];
. . . k=kk;
. . }
. . perm[ k ]=m;
. }
}


Страна: Беларусь Беларусь
  • Страница 1 из 1
  • 1
Поиск: