Test Message

d710: parking lot

內容

國防大學的停車場上,

停了許多各式各樣的車子,

有 Ford 的小轎車,

有 Toyota 的柴電混合車,

還有 BMW 的休旅車,

此外,

有藍色的車、紅色的車、白色的車 …

看完以上敘述,

你知道今天要寫什麼程式了嗎?

給一些車子的顏色和廠牌,

再依照指示列出有哪些車子符合要求。


輸入

第一部分有兩個數字 n, m ,( 0 < n, m ≤ 20 )

代表有 n 輛車子,

m 個指示。

第二部分有 n 行,

每行包含兩個字串:廠牌、顏色。( 以空白隔開,廠牌全部大寫,顏色全部小寫 )

第三部份有 m 行,

每行包含兩個字串,

分為兩種情況:brand XXXX 或 color xxxxx 。( 廠牌全部大寫,顏色全部小寫 )

每組測試資料間有一空行。

5 2
NISSAN red
BMW white
ROLLSROYCE black
TOYOTA white
TOYOTA blue
brand TOYOTA
color white

3 1
LEXUS pink
FORD green
PORSCHE gray
color pink

輸出

brand XXXXX 的意思是列出 XXXXX 廠牌 的車子,

color xxxxx 的意思是列出 xxxxx 顏色 的車子。

每行格式為 “廠牌 顏色”

保證一定有資料輸出。

列出順序以讀入先後為主。

每組測試資料間請留一空行。

TOYOTA white
TOYOTA blue
BMW white
TOYOTA white

LEXUS pink


解題思路

資料量不大,將資料存入陣列後,輸出時用線性比對出相符的資料輸出即可。


完整程式碼

AC (2ms, 100KB)
#include <stdio.h>
#include <string.h>
#define MAX 25

typedef struct Node
{
char brand[MAX], color[MAX];
}Car;

Car list[MAX];

int main()
{
int n, m;
char type[MAX], target[MAX];
while (scanf(" %d %d", &n, &m) == 2)
{
for (int i = 0; i < n; i++)
scanf(" %s %s", &list[i].brand, &list[i].color);
while (m--)
{
scanf(" %s %s", type, target);
if (type[0] == 'b')
{
for (int i = 0; i < n; i++)
{
if (!strcmp(target, list[i].brand))
printf("%s %s\n", list[i].brand, list[i].color);
}
}
else
{
for (int i = 0; i < n; i++)
{
if (!strcmp(target, list[i].color))
printf("%s %s\n", list[i].brand, list[i].color);
}
}
putchar('\n');
}
}
return 0;
}