Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 4
1

Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода

24.04.2012, 19:07. Просмотров 1155. Ответов 2
Метки нет (Все метки)

Поле шахмотной доски определяеся парой натуральных чисел, каждая из которых не превосходит восьми: первое число номер вертикали (при счете слева на права), второе-номер (при счете снизу вверх). даны натуральные числа k,l,m,n каждое из которых не превосходит восьми.

Требуется: выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода(указать поле на которое проводит первый ход)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2012, 19:07
Ответы с готовыми решениями:

Выяснить, можно ли с поля (k ,l) одним ходом ладьи попасть на поле (m, n)
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми:...

Выяснить, можно ли с поля (k, l) одним ходом Слона попасть на поле (m, n)
(НЕ могу понять как высчитываются дополнительные точки, что такое continue и зачем цикл ) Поле...

Шахматы. Выяснить, можно ли с поля (к, l) одним ходом слона попасть на поле (m, n)
привет, помогите составить программу. Поле шахматной доски определяется парой натуральных чисел,...

Выяснить, можно ли с заданного поля одним ходом слона попасть на другое заданное поле
Здравствуйте помогите пожалуйста, как это можно сделать за два хода Поле шахматной доски...

2
Эксперт С++
4702 / 2527 / 753
Регистрация: 18.08.2009
Сообщений: 4,550
25.04.2012, 05:44 2
Лучший ответ Сообщение было отмечено Grafiny как решение

Решение

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
using namespace std;
int k,l,m,n;
struct tt{
    int x,y,t;
};
tt Q[65], a[8][8];
int main()
{
    cin>>k>>l>>m>>n;
    int i,j, i_st=0,i_end=1;
    for(i=0; i<8; i++)
        for(j=0; j<8; j++)
            a[i][j].t=0;
    Q[0].x=k-1; Q[0].y=l-1; 
    while(i_st<i_end)
    {
        for(i=1; i+Q[i_st].x<8 && i+Q[i_st].y<8; i++)
            if(a[Q[i_st].x+i][Q[i_st].y+i].t==0)
            {
                a[Q[i_st].x+i][Q[i_st].y+i].t=a[Q[i_st].x][Q[i_st].y].t+1;
                a[Q[i_st].x+i][Q[i_st].y+i].x=Q[i_st].x;
                a[Q[i_st].x+i][Q[i_st].y+i].y=Q[i_st].y;
                Q[i_end].x=Q[i_st].x+i; Q[i_end++].y=Q[i_st].y+i; 
            }
        for(i=1; Q[i_st].x-i>=0 && i+Q[i_st].y<8; i++)
            if(a[Q[i_st].x-i][Q[i_st].y+i].t==0)
            {
                a[Q[i_st].x-i][Q[i_st].y+i].t=a[Q[i_st].x][Q[i_st].y].t+1;
                a[Q[i_st].x-i][Q[i_st].y+i].x=Q[i_st].x;
                a[Q[i_st].x-i][Q[i_st].y+i].y=Q[i_st].y;
                Q[i_end].x=Q[i_st].x-i; Q[i_end++].y=Q[i_st].y+i; 
            }
        for(i=1; i+Q[i_st].x<8 && Q[i_st].y-i>=0; i++)
            if(a[Q[i_st].x+i][Q[i_st].y-i].t==0)
            {
                a[Q[i_st].x+i][Q[i_st].y-i].t=a[Q[i_st].x][Q[i_st].y].t+1;
                a[Q[i_st].x+i][Q[i_st].y-i].x=Q[i_st].x;
                a[Q[i_st].x+i][Q[i_st].y-i].y=Q[i_st].y;
                Q[i_end].x=Q[i_st].x+i; Q[i_end++].y=Q[i_st].y-i; 
            }
        for(i=1; Q[i_st].x-i>=0 && Q[i_st].y-i>=0; i++)
            if(a[Q[i_st].x-i][Q[i_st].y-i].t==0)
            {
                a[Q[i_st].x-i][Q[i_st].y-i].t=a[Q[i_st].x][Q[i_st].y].t+1;
                a[Q[i_st].x-i][Q[i_st].y-i].x=Q[i_st].x;
                a[Q[i_st].x-i][Q[i_st].y-i].y=Q[i_st].y;
                Q[i_end].x=Q[i_st].x-i; Q[i_end++].y=Q[i_st].y-i; 
            }
        i_st++;
    }
    if(a[m-1][n-1].t==1)
        cout<<"1 step"<<endl;
    else
        cout<<"2 step"<<endl<<a[m-1][n-1].x+1<<" "<<a[m-1][n-1].y+1<<endl;
    return 0;
}
1
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 4
25.04.2012, 12:33  [ТС] 3
пасибочки* большое)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2012, 12:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выяснить, можно ли с поля с координатами (k, l) одним ходом ферзя попасть на поле с координатами (m, n)
Поле шахматной доски определяется парой натуральных чисел, первое число – номер вертикали, второе –...

Выяснить, можно ли с поля с координатами (k, l) одним ходом слона попасть на поле с координатами (m, n)
Долго думала над задачей, но так и не пришла к выводу, как можно это адекватно решить. Спасибо...

Выяснить можно ли с ячейки (r, I) одним ходом туры попасть в ячейку (m, n)
Шахматное поле определяется парою натуральных чисел, каждое с которых не превышает восьми: первое...

Можно ли одним ходом слона попасть с поля (k, l) на поле (m, n)
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми:...

можно ли с поля (k,l) одним ходом ферзи попасть в поле (m,n).
Поле шахматной доски определяется парой натуральных чисел,каждое из которых не превосходит 8.первое...

Можно ли с поля (k, l) одним ходом слона попасть на поле (m, n)?
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми:...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.