距离PAT考试还有18天最重要的是做透每一题
(1)
思路:
用一个数组保存地址的下一地址
用另一个数组标记
注意点是while循环哪里是判断i!=-1 不是next[i]!=-1;
以及输出格式是五位的数不足补零
#include <cstdio> #include <cstring> using namespace std; #define M 100001 int next1[M]; char flag[M]; int main() { int b1,b2; int n; memset(flag,0,sizeof(flag)); memset(next1,0,sizeof(next1)); scanf("%d %d %d",&b1,&b2,&n); for(int i=0;i<n;i++) { int ad1,next; char ch; scanf("%d %c %d",&ad1,&ch,&next); next1[ad1]=next; } int i=b1; while(i!=-1) { flag[i]=1; i=next1[i]; } i=b2; while(i!=-1) { if(flag[i] == 1) { printf("%05d ",i); return 0; } i=next1[i]; } printf("%d ",-1); return 0; }