0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 12

Занумеровать клетки исходного квадрата следующим образом

14.04.2013, 21:29. Показов 3455. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите кто сможет!!
Задали реализовать задачу на с++.А с чего начать просто не понимаю.В плюсах я конечно не спец,но в такой задачи я даже не знаю с чего начать.
Пробовал найти,есть реализация на Delphi,ф на плюсах так и не смог((

Задание:

Квадрат разбит на 4k равновеликих квадратных клеток. Квадрат перегибается поочередно относительно вертикальной (правая половина подкладывается под левую) и горизонтальной (нижняя половина подкладывается под верхнюю) оси симметрии до тех пор, пока все клетки не будут расположены друг под другом. Требуется занумеровать клетки исходного квадрата таким образом, чтобы в результате выполнения операций перегиба номера клеток, расположенных друг под другом, образовали числовую последовательность 1,2,3,...,4k, начиная с верхней клетки.

Буду весь благодарен!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2013, 21:29
Ответы с готовыми решениями:

Олимпиадная задача. Занумеровать клетки исходного квадрата по правилу
Олимпиадная задача Квадрат разбит на 4k одинаковых квадратных клеток. Квадрат перегибается поочередно относительно вертикальной...

В таблице клетки заполнены случайным образом цифрами от 0 до 9. Найти маршрут из клетки A(1,1) в клетку A(N,N)
В таблице NхN, клетки заполнены случайным образом цифрами от 0 до 9. Найти маршрут из клетки A(1,1) в клетку A(N,N) такой, что: 1) он...

Заполнить матрицу следующим образом
Помогите пожалуйста заполнить матрицу следующим образом: 1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4...

7
 Аватар для abit
857 / 511 / 147
Регистрация: 03.02.2013
Сообщений: 1,696
14.04.2013, 22:03
В принципе как решить эту задачу я понял и даже было сел писать алгоритм... но потом увидел:
Квадрат разбит на 4k равновеликих квадратных клеток.
это подстава...
допустим k=2, значит квадрат разбит на 8 равных квадратов? мне в голову не приходит ни одного способа как это сделать и можно ли вообще это сделать ...

мой вариант годится только для 4^k

проверьте условие
0
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 12
15.04.2013, 15:19  [ТС]
Извиняюсь,ошибся
именно для 4^k
Вы были абсолютно правы)

Добавлено через 15 часов 6 минут
abit, ты смог бы помочь мне?а то я совсем задание не понимаю
0
496 / 11 / 6
Регистрация: 10.04.2013
Сообщений: 44
15.04.2013, 16:58
Та же задача только раскладывается до прямой , buff[0][0] -> buff[3][3] и будет искомый квадрат
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#define k 4
#define m (1<<k)
int buff[m][m] = {0};
 
int main(int argc, _TCHAR* argv[])
{
    int i,x,y;
    int pas_row, pas_col;
    int row_src, col_src, row_des, col_des;
    int row_end, col_end;
 
    for(i=0;i<m;i++)
        buff[i][0] = i+1;
 
    for(i=0;i<k;i++)
    {
        pas_row = 1<<(k-i-1);
        row_end = 1<<(k-i);
        for(x=0;x<=pas_row-1;x++)
        {
            pas_col = 1<<i; 
            col_end = 1<<i; 
 
            for(y=0;y<pas_col;y++)
            {
                row_src = row_end - x - 1;
                col_src = col_end - y - 1; 
                row_des = x; 
                col_des = pas_col + y;
                buff[row_des][col_des] = buff[row_src][col_src];
            }
        }
    }
    FILE *fout;
    fout = fopen("Log.txt","wt");
    for(x=0;x<m;x++)
    {
        for(y=0;y<m;y++) fprintf(fout, "%3d ", buff[x][y]);
        fprintf(fout, "\n");
    }
    fclose(fout); 
        return 0;
}
0
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 12
15.04.2013, 17:07  [ТС]
w8me, а где именно эту запись нужно вставлять?
0
496 / 11 / 6
Регистрация: 10.04.2013
Сообщений: 44
15.04.2013, 17:13
Вместо этого
C++
1
2
3
4
5
6
7
8
    FILE *fout;
    fout = fopen("Log.txt","wt");
    for(x=0;x<m;x++)
    {
        for(y=0;y<m;y++) fprintf(fout, "%3d ", buff[x][y]);
        fprintf(fout, "\n");
    }
    fclose(fout);
Вставьте это
C++
1
2
3
4
5
6
    for (int i=0; i<k; i++)
    {
        for (int j=0; j<k; j++)
            printf("%3d ", buff[i][j]);
        printf("\n");
    }
0
 Аватар для abit
857 / 511 / 147
Регистрация: 03.02.2013
Сообщений: 1,696
15.04.2013, 17:44
abit, ты смог бы помочь мне?а то я совсем задание не понимаю
]

ваша задача решается не так сложно, как вы думаете... только если я сяду писать - то там будут участвовать контейнеры vector и map , но я вижу вам какое-то решение дали... так что если оно работает - бессмысленно даже начинать

суть того, что я придумал такая:
создать трёх-мерный контейнер vector< vector < vector < int > > >, аналог ( трёхмерного массива ) допустим A[i][j][z] = j*k+i;
забить его по приниципу
i - номер квадрата по X [0..k)
j - номер квадрата по Y [0..k)
z - для всех элементов оставить нулевым

процесс N-ого (N-номер складывания от 1 до k-1) складывания по вертикали - добавлять все элементы в A[0..4^(k-N)) [0..k) [p] из A[4^(k-N)..4^(k-N-1)) [0..k) [всё что есть тут]
процесс M-ого складывания по вертикали - аналогично добавлять все элементы в
A [0..k) [0..4^(k-M)) [p] из A [0..k) [4^(k-M)..4^(k-M-1)) [всё что есть тут]

в конце вы получите в A[0][0][1..4^k] набор чисел, если их все запихнуть в map <size_t,size_t>
где first элемент (ключ) будет само число, а second-элемент - индекс в массиве A[0][0][1..4^k], то получите решение задачи, по обращению к map например mymap [0] он вам выдаст какой номер нужно написать на 1-м квадрате, mymap[1] - на втором и т.д.

в общем мне кажется что я слишком много лишних структур привлёк, но тем не менее это решение в лоб
0
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 12
20.04.2013, 13:55  [ТС]
abit, к сожалению это задание не верно(
мог ты мне помочь? с алгоритмами я плохо дружу((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.04.2013, 13:55
Помогаю со студенческими работами здесь

Заполнить матрицу следующим образом
Пожалуйста помогите! Дана матрица A размерностью 5x5. Заполнить ее следующим образом: 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 ...

Заполнить массив А следующим образом
ребята,очень помощь нужна Заполнить массив А следующим образом

Напечатать числа следующим образом: C
21 20.4 22 21.4 ... 35 34.4

Заполнить массив следующим образом:
1 2 3 4 5 . . . 10 11 12 13 . . . 20 21 22 23 . . . 30 . . . . . . . . . . . . 91 92 93 . . . 100 Заполнить массив следующим...

Заполнить матрицу n на n следующим образом
заполнить матрицу n на n следующим образом 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru