C語言 新生舞會

2021-09-07 10:00:58 字數 1805 閱讀 1895

演算法訓練 新生舞會  

時間限制:1.0s   記憶體限制:512.0mb

問題描述

新生舞會開始了。n名新生每人有三個屬性:姓名、學號、性別。其中,姓名用長度不超過20的僅由大小寫字母構成的字串表示,學號用長度不超過10的僅由數字構成的字串表示,性別用乙個大寫字元『f』或『m』表示。任意兩人的姓名、學號均互不相同。換言之,每個人可被其姓名或學號唯一確定。給出m對兩人的資訊(姓名或學號),判斷他們是否能共舞。兩人能共舞的充要條件為兩人性別相異。

輸入

第一行乙個整數n(2<=n<=1000),表示學生人數。接下來的n行每行依次包含一名新生的姓名、學號、性別,分別用乙個空格隔開。

之後的一行是乙個整數m(1<=m<=1000),表示詢問的數目。接著的m行每行包含兩個資訊(姓名或學號),保證兩個資訊不屬於同一人,中間用乙個空格隔開。

輸出

對於每個詢問輸出一行,如果兩人可以共舞,輸出乙個大寫字母『y』,否則輸出乙個大寫字母『n』。

樣例輸入

4

john 10 m

jack 11 m

kate 20 f

jim 21 m

3john 11

20 jack

jim jack

樣例輸出

n

y

n

提示

可以把名字和學號都當成字串處理。可以按以下流程實現。

#include

#include

using namespace std;

struct tstudent

;void readdata(tstudent student, int n)

int findstudent(tstudent student, int n, char* data)

void solve(tstudent student, int n, int m)

作者注釋:挺久沒有做「結構體排序」的題目了,都手生了。

1 #include2 #include3/*

定義學生資訊的結構體

*/4 typedef struct

studentstu;

9int

m,n;

10 stu st[1010

];11

/*12

strcmp函式:

13比較兩個字串設這兩個字串為str1,str2:若str1==str2,則返回零.

14*/

15int findbynum(char

num)21}

22}23int findbyname(char

name)29}

30}31/*

32輸入兩個人的資訊x、y:

33通過呼叫findbynum、findbyname函式判斷這兩個人能否成為舞伴

34*/

35void

solve()else

4849

if(y[0]<=57)else

5455

if(judgex != judgey) printf("

y\n");//

若不能配對

56else printf("

n\n"

);57}58

}59intmain()

64solve();

65return0;

66 }

演算法訓練 新生舞會

問題描述 新生舞會開始了。n名新生每人有三個屬性 姓名 學號 性別。其中,姓名用長度不超過20的僅由大小寫字母構成的字串表示,學號用長度不超過10的僅由數字構成的字串表示,性別用乙個大寫字元 f 或 m 表示。任意兩人的姓名 學號均互不相同。換言之,每個人可被其姓名或學號唯一確定。給出m對兩人的資訊...

演算法訓練 新生舞會

演算法訓練 新生舞會 時間限制 1.0s 記憶體限制 512.0mb 問題描述 新生舞會開始了。n名新生每人有三個屬性 姓名 學號 性別。其中,姓名用長度不超過20的僅由大小寫字母構成的字串表示,學號用長度不超過10的僅由數字構成的字串表示,性別用乙個大寫字元 f 或 m 表示。任意兩人的姓名 學號...

藍橋杯 演算法訓練VIP 新生舞會(C語言實現)

題目描述 新生舞會開始了。n名新生每人有三個屬性 姓名 學號 性別。其中,姓名用長度不超過20的僅由大小寫字母構成的字串表示,學號用長度不超過10的 僅由數字構成的字串表示,性別用乙個大寫字元 f 或 m 表示。任意兩人的姓名 學號均互不相同。換言之,每個人可被其姓名或學號唯一確定。給出m對 兩人的...