来淄博旅游
Problem Description
淄博某旅行社每天都要接待來自全國各地的游客,他們從各個城市來到張店區,游玩后又去淄博的其他旅游景點。從各個城市來張店的游客只是在網上報名,然后旅行社根據統計的人數,用大巴把他們從不同城市拉到張店。在張店玩一天后,這些游客又要到淄博其他景點玩,所以重新統計到淄川、臨淄、周村、博山去的游客,用大巴把他們分送過去。
統計這些游客是很費精力的,但讓電腦做會簡單一些,現在就請你幫忙設計這個程序統計分送的游客。
Input
第一行是一個正整數n(n <= 100)?,代表網上報名人數。接下來n行,每行包括一個name(字符串,不超過20個字符),來的城市from(字符串,英文小寫,不超過20個字符),去的城市to(只有zichuan,linzi,zhoucun,boshan中的一個),名單順序代表報名順序,也是優先處理順序。
Output
對于每個始發城市,先輸出始發城市名,冒號,從此城市來的游客名單。
對要去的目的地,先輸出目的地城市,冒號,到此城市的游客名單。目的地城市只有題中已經告訴的四個,并按題中提到的順序輸出,對于沒有要去的城市也要輸出。
在名單前列的人名輸出時要先于在名單后面的。更詳細的輸入輸出見示例。
Example Input
6 skym zoucheng linzi plmm beijing boshan moon jinan boshan pc zoucheng zichuan von shanghai boshan qq beijing zichuan #include <stdio.h> #include <stdlib.h> struct node {char name[21];char from[21];char to[21]; }m[101]; int main() {int n,i,j,sta[101];//sta[i]~標記第i個人的來源地是否已輸出char place[4]={"zichuan","linzi","zhoucun","boshan"};//目的地for(i=0;i<101;i++)sta[i]=1;//來源地--未輸出scanf("%d",&n);for(i=0;i<n;i++)scanf("%s %s %s",m[i].name,m[i].from,m[i].to);for(i=0;i<n;i++){if(sta[i]){printf("%s : %s",m[i].from,m[i].name);for(j=i+1;j<n;j++)if(strcmp(m[j].from,m[i].from)==0&&sta[j]){printf(" %s",m[j].name);sta[j]=0;//來源地--輸出完畢}printf("\n");}}for(i=0;i<4;i++){printf("%s :",place[i]);//輸出目的地for(j=0;j<n;j++)if(strcmp(place[i],m[j].to)==0)//輸出同一目的地游客姓名printf(" %s",m[j].name);printf("\n");}return 0; }創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
- 上一篇: 顺序表应用5:有序顺序表归并
- 下一篇: 1801 不重复的三位数