Решения задач acmp.ru
Главная
Вход
Регистрация
Четверг, 01.10.2020, 05:53Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Pascal [121]
C++ [76]

Поиск

Мини-чат
200

Легкий заработок!

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Файлы » C++

0382 Покраска лабиринта

Скачать файл можно после просмотра рекламы:

05.06.2012, 03:12
#include <stdio.h>

static char **a;
static bool t;
static long int sum;
static unsigned int n;
static FILE *f;
static int i,j;

void rec(int x,int y)
{
f=fopen("DEBUG.TXT","a");
for (i=0;i<n;i++){
for (j=0;j<n;j++) fprintf(f,"%c",a[i][j]);
fprintf(f,"\n");
};
fprintf(f,"sum=%d x=%d y=%d\n\n",sum,x,y);
fclose(f);
if ((x==(n-1))&&(y==(n-1))) t=true;
if (y<n-1)
switch (a[x][y+1])
{
case '.':
a[x][y]='1';
a[x][y+1]='1';
rec(x,y+1);
break;
case '#':
sum=sum+25;
break;
} else sum=sum+25;
if (y>0)
switch (a[x][y-1])
{
case '.':
a[x][y]='1';
a[x][y-1]='1';
rec(x,y-1);
break;
case '#':
sum=sum+25;
break;
} else sum=sum+25;
if (x<n-1)
switch (a[x+1][y])
{
case '.':
a[x][y]='1';
a[x+1][y]='1';
rec(x+1,y);
break;
case '#':
sum=sum+25;
break;
} else sum=sum+25;
if (x>0)
switch (a[x-1][y])
{
case '.':
a[x][y]='1';
a[x-1][y]='1';
rec(x-1,y);
break;
case '#':
sum=sum+25;
break;
} else sum=sum+25;
};

int main()
{
f=fopen("INPUT.TXT","r");
char tmp;
fscanf(f,"%d",&n);
a=new char*[n];
fscanf(f,"%c",&tmp);
for (i=0;i<n;i++)
{
a[i]=new char[n];
for (j=0;j<n;j++) fscanf(f,"%c",&a[i][j]);
fscanf(f,"%c",&tmp);
};
fclose(f);
t=true;
t=false;
sum=0;
f=fopen("DEBUG.TXT","wt");
fclose(f);
rec(0,0);
if (!t) rec(n-1,n-1);
f=fopen("OUTPUT.TXT","wt");
fprintf(f,"%d",sum-100);
fclose(f);
}
Категория: C++ | Добавил: shum
Просмотров: 1822 | Загрузок: 0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Это интересно!


Copyright MyCorp © 2020