В этом случае я не получаю все пути и пределы смещения
Представьте себе робота, сидящего в верхнем левом углу сетки NxN. Робот может двигаться только в трех направлениях: вправо, вниз и по диагонали вниз. Робот должен достичь нижнего правого угла сетки NxN. Представьте себе, что определенные квадраты являются “запретными” или “смещенными", так что робот не может наступить на них. Напишите программу для определения количества возможных путей для робота.
Формат ввода и вывода:
См. примеры ввода и вывода для получения спецификаций форматирования.
Ввод точек смещения заканчивается, когда пользователь вводит координаты как (-1, -1).
Весь текст, выделенный жирным шрифтом, соответствует входу, а остальная часть - выходу.
Пример ввода и вывода 1:
Введите размер сетки
3
Введите точки сетки, которые являются смещениями
0 1
-1 -1
Пути для робота таковы
( 0 , 0 ) - ( 1 , 0 ) - ( 2 , 0 ) - ( 2 , 1 ) - ( 2 , 2 )
( 0 , 0 ) - ( 1 , 0 ) - ( 1 , 1 ) - ( 2 , 1 ) - ( 2 , 2 )
( 0 , 0 ) - ( 1 , 0 ) - ( 1 , 1 ) - ( 1 , 2 ) - ( 2 , 2 )
( 0 , 0 ) - ( 1 , 0 ) - ( 1 , 1 ) - ( 2 , 2 )
( 0 , 0 ) - ( 1 , 0 ) - ( 2 , 1 ) - ( 2 , 2 )
( 0 , 0 ) - ( 1 , 1 ) - ( 2 , 1 ) - ( 2 , 2 )
( 0 , 0 ) - ( 1 , 1 ) - ( 1 , 2 ) - ( 2 , 2 )
( 0 , 0 ) - ( 1 , 1 ) - ( 2 , 2 )
Пример ввода и вывода 2:
Введите размер сетки
-7
Неверный Ввод
Что я уже пробовал:
#include<stdio.h> #include<stdlib.h> int ch,a[100]; static int i=0; void path(int u,int v,int n,char arr[],size_t s,size_t p) { ch=1; if(u==(n-1)&& v==(n-1)) { p+=snprintf(arr+p,s-p,"(%d , %d)",u,v); } else { p+=snprintf(arr+p,s-p,"(%d , %d)-",u,v); } if(p>=s) { fprintf(stderr,"small path"); exit(1); } if(u==n-1&&v==n-1) { printf("%s",arr); } else { if(u<n-1) { path(u+1,v,n,arr,s,p); } if(u<n-1&&v<n-1) { path(u+1,v+1,n,arr,s,p); } } } void main() { char arr[1000]; int size; printf("Enter the size of the grid\n"); scanf("%d",&size); if(size<=0) { printf("Invalid Input"); exit(1); } printf("Enter the grid points that are offsets\n"); here1: scanf("%d %d",&a[i],&a[i+1]); if(a[i]==-1&&a[i+1]==-1) { goto here; } else { i+=2; goto here1; } here: printf("The paths for the robot are\n"); i=0; path(0,0,size,arr,sizeof arr,0); }
jeron1
Есть вопрос?