Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Grafiny
 Аватар для Grafiny
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 4
#1

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

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

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

Требуется: выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода(указать поле на которое проводит первый ход)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2012, 19:07     Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода
Посмотрите здесь:

C++ Известны углы α и β у основания. Выяснить, если это возможно, тип трапеции
C++ Выяснить, можно ли из строки st1 сделать строку st2 путем перестановки символов
C++ Определить сможет ли белый слон одним ходом пройти на поле
C++ как можно сделать это? если вообще возможно (не задача)
Определить сможет ли белый слон расположенный на поле (a,b),одним ходом пойти на поле (e,f),не попав при этом под удар чёрного коня нах.(c,d) C++
C++ Существует указатель p. Можно ли выяснить, содержит он адрес допустимого значения или нет
По трем введенным вещественным числам выяснить, можно ли построить треугольник C++
C++ Проверить можно ли ходом короля из одной клетки попасть в другую
Определить, может ли король попасть с первой заданной клетки на вторую одним ходом C++
Определить, может ли король попасть с первой заданной клетки на вторую одним ходом (шахматы) C++
C++ Определить может ли конь попасть с первой клетки на вторую одним ходом?
Выяснить, можно ли с заданного поля одним ходом слона попасть на другое заданное поле C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.04.2012, 05:44     Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода #2
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;
}
Grafiny
 Аватар для Grafiny
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 4
25.04.2012, 12:33  [ТС]     Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода #3
пасибочки* большое)))
Yandex
Объявления
25.04.2012, 12:33     Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода
Ответ Создать тему
Опции темы

Текущее время: 11:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru