Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
 Аватар для BlincAttack
0 / 0 / 0
Регистрация: 15.09.2009
Сообщений: 63

магические квадраты

07.11.2009, 04:07. Показов 4532. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.Вот выдали мне тестовую работу на дом.Всё что смог решил осталось 4 задачки.Кто знает напишите код плиз!Заранее спс!

1.Написать программу определения количества билетов с 6-значными номерами, у которых сумма первых 3 десятичных цифр равна сумме 3 последних десятичных цифр.

2.Магическим квадратом называется квадрат,в котором сумма чисел по всем горизонталям,вертикалям,и диагоналям совпадает.Найти все магические квадраты 3х3, составленные из девяти цифт (1..9).

Пример:
2 7 6
9 5 1
4 3 8


3.Рассмотрим шахматное поле n x n, на котором размещены n ферзей.Расположение ферзей называется допустимым, если они не атакуют друг друга.Написать программу построения всех полных допустимых расположений N ферзей, где 4<=N>=20.


4.План прямоугольного сада размером m x n состоит из квадратных зон.В каждой зоне растёт по дереву.С каждого дерева любой зоны могут упасть несколько яблок.В левом верхнем квадратике находится ёжик,который должен дойти до правого нижнего квадратика.Существуют ограничения относительно способа передвижения: ёжик может двигаться из текущего квадрата только в один из двух соседних:правый либо нижний.Составьте программу, которая вычисляет максимальное количество яблок, которые может собрать ёжик, передвигаясь к нужному квадратику.

Вроде всё=)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.11.2009, 04:07
Ответы с готовыми решениями:

Вывести на экран эти квадраты, выделить другим цветом квадраты с максимальной и минимальной площадью
Помогите с заданием : В файле задано квадраты координатами диагоналей. Вывести на экран эти квадраты, выделить другим цветом квадраты с...

Магические числа GZipStream
Здравствуйте, Проблема в следующем. Я пишу архиватор, который выполняет работу в многопоточном режиме по типу конвейера. Я считываю блок...

Квадраты в матрице
В матрице, состоящей из нулей и единиц найти квадрат наибольшего размера, состоящий целиком из нулей.

6
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
07.11.2009, 04:25
на C# не пишу) да и вобще ленюсь писать счас код
подскажу с алгоритмами в общем виде, либо сами напишете, либо может кто-то ещё

1.т.к. ограничений по времени работы нет, создаём цикл (i от 0 или 1, как хочется, до 999999)
в этом цикле с каждым i проводим такие операции:
делим нацело(без остатка) на 100000 = получаем первое число 6-тизначного числа - х1
вычитаем из i х1*100000, и делим нацело на 10000 = получаем второе число - х2
аналогично вычитем из i числа х1*100000 и х2*10000, делим нацело на 1000 = получаем число х3
....
и так далее, получаем 6 цифр х1..х6 из которых состоит наше 6-тизначное число
далее простейший иф, где складывает х1+х2+х3 и сравниваем с суммой х4+х5+х6
если равны, то добавляем единичку в переменную к, если не равны, то уходим на следующий виток цикла
после того как цикл отработает в к будет содержаться ответ
1
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
07.11.2009, 04:53
теперь 4-ая задча т.к. она мне кажется чуть легче

итак, в начале у нас массив МхН (массив A), в каждой ячейке которого записано кол-во яблок, которое лежит в данном квадрате сада
т.к. нам ненужен путь, а только кол-во яблок, то я бы сделал так:
создаём второй массив такого же размера (МхН - массив B) (чтобы нам не путаться, сразу договоримся что массив начинается с элемента (0,0) до элемента (M-1,N-1)
первую строку заполняем так:
b(0,0) := a(0,0); // в первой клетке у ёжика яблок столько же сколько в первой клетке
далее
b(i,0) := b(i-1,0)+a(i,0); (где i от 1 до М) // ёжик двигался только вправо, в каждой клетке кол-во яблок которые он собрал по пути.
первый столбец заполняем так:
b(0,0) у нас уже заполнен, а дальше
b(0,i) := b(0,i-1)+a(0,i); //ёжик двигался только вниз, в каждой клетке кол-во яблок который он мог собрать по пути.
Для всех остальных клеток создаём двойной цикл:
по i от 1 до М-1
по j от 1 до Н-1
считаем 2 числа:
х1 := b(i-1,j) + a(i,j);
x2 := b(i,j-1) + a(i,j);
сравниваем их, и большее записываем в b(i,j)
собственно когда этот цикл отработает, значение максимально возможного колличества яблок будет храниться в ячейке b(M-1,N-1);
(это получается потому, что мы в каждую последующую ячейку записываем максимально возможное значение, как если бы ёжик пришёл в неё сверху или слева)

З.Ы. можно сделать и в одном массиве но у меня привычка, всегда исходные данные хранить

Добавлено через 13 минут
Цитата Сообщение от BlincAttack Посмотреть сообщение
ничего не понял но спасибо=)
да что там понимать
цикл, в нём 6 операций деления по модулю, два сложения и 1 if
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
07.11.2009, 06:16
Первая
C#
1
2
3
4
5
6
7
8
9
10
int count = 0;
for (int i = 100000; i <= 999999; i++)
{
    string s = i.ToString();
    if ((s[0] + s[1] + s[2]) == (s[3] + s[4] + s[5]))
    {
        count++;
    }
}
Console.WriteLine(count);
1
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
07.11.2009, 06:35
по поводу третей задачки, с ферзями, мне счас ничего умного в голову не приходит) помниться что задача популярная и её решение несколько раз обсуждалось на форуме да и в интернете найти поидее не сложно

по поводу второй
собственно вся задача состоит в том, чтобы перебрать все возможные комбинации расстановки чисел от 1 до 9 в квадрате 3 на 3 (если числа могут повторяться, то вобще халява и не интересно, поэтому будем считать что числа не повторяются )
собственно я бы использовал вот какую реализацию (надеюсь что в С# есть аналог GoTo )

создаём булевый массив из 9 элементов(А), и обнуляем его.
и ещё 1 массив типа инт (В).
каждая ячейка массива будет соответствовать цифре от 1 до 9. (т.е. a[1] соответствует 1, a[2] 2 и т.д.)
далее создаём 9 вложенных циклов, которые будут крутиться от 1 до 9-ти.
каждый цикл соответствует ячейке в массиве В. Т.е. из первого цикла будем писать в первуя ячейук В, из второго во вторую и т.п.
в верхнем цикле, перед каждой итерацией обнуляем массив а.
В каждом цикле делаем такую проверку:
(например в цикле по i)
если a[i]=0, то делаем его равным 1, записываем i в соответствующую данном циклу ячейку массива В, и переходим в следующий цикл.
если равен 1, то увеличиваем i на 1, и при помощи GoTo(делаем ссылку... незнаю как в C# но в С++ GoTo будет работать) возвращаемся к этой проверке.
Таким образом мы всякий раз заполняем массив В уникальными цифрами от 1 до 9, всеми возможнымив вариантами
остаётся только проверить, какие варианты нам подходят, для этого в последнем, 9-м цикле, тупо в лоб проверяем, чтобы
b1+b2+b3 == b4+b5+b6 == b7+b8+b9 == .... == b1+b5+b9
собственно если всё равно, то выводим массив В как нам подходящий, если не равно то просто уходим на следующую итерацию

З.Ы. вобщем если никто с кодом не поможет, то постарайся сам реализовать по тому, что я написал(или ещё лучше придумай что-нить более оптимизированное, я тут все задачи почти в лоб решал, наверно есть пути короче ) в том что я написал всё просто, одни циклы да массивы
и если где-то идея не понятна, спрашивай попробую максимально подробно объяснить

Добавлено через 2 минуты
Цитата Сообщение от HIMen Посмотреть сообщение
Первая
C#
1
2
3
4
5
6
7
8
9
10
int count = 0;
for (int i = 100000; i <= 999999; i++)
{
    string s = i.ToString();
    if ((s[0] + s[1] + s[2]) == (s[3] + s[4] + s[5]))
    {
        count++;
    }
}
Console.WriteLine(count);
только i стоит считать не от 100000, а от 1000 т.к. билет с номером 001001 я думаю вполне подойдёт
1
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
08.11.2009, 11:47
Задание 4:
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
int[,] mas = new int[5, 6];
            Random rnd = new Random();
            for (int i = 0; i < 5; i++) 
            {
                for (int j = 0; j < 6; j++) 
                {
                    mas[i, j] = 1 + rnd.Next(5);
                    Console.Write(" " + mas[i, j]);
                }
                Console.WriteLine();
            }
            int apple=mas[0,0];
            for (int j = 1, i = 0; j < 6; j++) 
            {
                if (mas[i, j] > mas[i + 1, j - 1])
                {
                    apple += mas[i, j];
                    if (j == 5) 
                    {
                        for (int a = i+1; a < 5; a++)
                        { apple += mas[a, 5]; }
                    }
                }
                else 
                {
                    apple += mas[i + 1, j - 1];
                    i++; j--;
                    if (i == 4) 
                    {
                        for (int a = j+1; a < 6; a++)
                        { apple += mas[4, a]; j++; }
                    }
                }
                if (i == 4 && j == 5) { break; }
            }
            Console.WriteLine("Максимальное количество яблок: " + apple);
            Console.ReadKey();
1
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
08.11.2009, 16:04
На счет первой: я когда-то извращался и сделал 6 вложенных циклов и в них считал сумму.
И я считаю, что начинать считать надо с первого билета, то есть, с 000001.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.11.2009, 16:04
Помогаю со студенческими работами здесь

Вписать квадраты в прямоугольник
Всем доброго времени суток. Дано задание: /*Подробно описать функцию перебора с возвратом, решающую следующую задачу: дано множество...

Вписанные квадраты
Подскажите как побороть эту задачку, нужно нарисовать фигуры как на картинке, у меня получилось только нарисовать в ручную первый ромб: ...

Белые квадраты
Здраствуйте! Произошёл такой конфуз В Visual Studio 2017 есть форма: Но при запуске она выглядит вот так: С другими Формами...

магические квадраты
&quot;магический квадрат&quot; обладает тем свойством, что Все строки и Колонка суммы и две диагональные суммы всегда такой же являются . ...

Магические квадраты нечетного порядка
Вот разбирался недавно в магических квадратах и нужно было посчитать сумму всех цифр в квадрате, пришол к такому выводу, что любой нечётный...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru