📄 铁路.txt
字号:
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct port
{
char name[2];
} Port;
typedef struct route
{
int size;
Port ports[20];
} Route;
Route routes[10];
int n;
int stackRoute[3],sp;
Port stackPort[3];
bool isHave;
void show()
{
int i;
printf("\n方案\n");
for(i=0;i<sp;i++) printf("乘%d路 在%s下车\n",stackRoute[i],stackPort[i].name);
}
bool search(char a[],char b[],int d)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<sp;j++)
{
if(i+1==stackRoute[j]) break;
}
if(j>=sp)
{
for(j=0;j<routes[i].size;j++)
{
if(strcmp(routes[i].ports[j].name,a)==0) break;
}
if(d==0)
{
for(j++;j<routes[i].size;j++)
{
if(strcmp(routes[i].ports[j].name,b)==0)
{
isHave=true;
stackRoute[sp]=i+1;
stackPort[sp]=routes[i].ports[j];
sp++;
show();
sp--;
}
}
}
else
{
for(j++;j<routes[i].size;j++)
{
stackRoute[sp]=i+1;
stackPort[sp]=routes[i].ports[j];
sp++;
search(routes[i].ports[j].name,b,d-1);
sp--;
}
}
}
}
return isHave;
}
int main()
{
int i,j;
char a[2],b[2];
printf("请输入共有多少条路线: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入%d路所经过站的总数: ",i+1);
scanf("%d",&routes[i].size);
getchar();
printf("为%d路输入每一个站的名字(一个字母): ",i+1);
for(j=0;j<routes[i].size;j++)
{
scanf("%s",routes[i].ports[j].name);
}
}
while(1)
{
printf("\n输入要查询的两站: ");
scanf("%s %s",a,b);
isHave=false;
for(i=0;i<3;i++)
{
sp=0;
if(search(a,b,i)) break;
}
if(i>=3) printf("没有适合的路线\n");
}
return 0;
}
/*
6
7
a e d t u x z
3
d k m
5
l e o t k
6
k b c n m y
3
y u i
7
p a n y c q o
p t
*/
匆匆忙忙写完的,应该没什么问题/*...*/中为测试数据(你自己也可以照着编),今天没时间了,明天给你加注释.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -