首页 > 代码库 > poj 2021 Relative Relatives
poj 2021 Relative Relatives
题目链接:http://poj.org/problem?id=2021
思路:
由于数据较小,采用O(N^2)的暴力算法,算出所有后代的年龄,再排序输出。
代码:
#include <iostream>#include <string.h>#include <algorithm>using namespace std;#define MAX_N ( 100 + 10 )typedef struct Descendant{ char Name[30]; int Age;}Desd;char Father[MAX_N][30];char Child[MAX_N][30];int Age[MAX_N];Desd Descen[MAX_N];int Cmp( Desd a, Desd b );int main(){ int n, Count; Count = 0; strcpy( Descen[0].Name, "Ted" ); Descen[0].Age = 100; scanf( "%d", &n ); for ( int i = 0; i < n; ++i ) { int Num, Index_Father, EndDescen; Index_Father = EndDescen = 0; Count++; scanf( "%d\n", &Num ); for ( int j = 0; j < Num; ++j ) scanf( "%s %s %d", Father[j], Child[j], &Age[j] ); while ( Index_Father < Num ) { for ( int m = 0; m < Num; ++m ) { if ( strcmp( Descen[Index_Father].Name, Father[m] ) == 0 ) { EndDescen++; strcpy( Descen[EndDescen].Name, Child[m] ); Descen[EndDescen].Age = Descen[Index_Father].Age - Age[m]; } } Index_Father++; } sort( Descen, Descen + Num + 1, Cmp ); printf( "DATASET %d\n", Count ); for ( int n = 1; n <= Num; ++n ) printf( "%s %d\n", Descen[n].Name, Descen[n].Age ); } return 0;}int Cmp( Desd a, Desd b ){ if ( a.Age == b.Age ) return strcmp( a.Name, b.Name ) < 0; else return a.Age > b.Age;}
poj 2021 Relative Relatives
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。