`
synchronized_lala
  • 浏览: 41108 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

NOJ coder的音乐烦恼--字符串处理

阅读更多

 

http://acm.nit.net.cn/showproblem.jsp?pid=1366

问题描述:
  输入1个数N(1 <= N <= 5000),表示歌曲数.接下来共有N行,每行包括一个字符串m
(长度小于50字节,可能有中文,一个中文字占2个字节),以及一个数字p(p <= INT_MAX)。
m表示歌曲名,p表这首歌的优先级(1,2,3...),数字越小优先级就越高.优先级<=0的歌
曲是coder不喜欢的.保证不存在两首歌优先级相同的情况.保证不存在两首歌名称相同的情
况.
  输出一个k,表示coder同学喜欢听的歌曲的数量.接下去k行,优先级从高到低,每行输出
coder同学喜欢听的音乐名称.

SAMPLE INPUT
2
月亮至上 -1
because of you 1
6
太早 3
不完整的旋律 4
第一个清晨 1
18 and life 2
still'loving 6
我恨你 5

SAMPLE OUTPUT
1
because of you
6
第一个清晨
18 and life
太早
不完整的旋律
我恨你
still'loving

 

 

#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>

using namespace std;

int const ic_max = 5001;

struct stuNode
{
	int iPriority;//优先级
	string strSong;//歌曲名
};

void vInputData(int iN,stuNode stuSong[]);
void vGetData(string strT,stuNode& stuSong);
bool bCmp(const stuNode& stuA,const stuNode& stuB);
void vPrintAns(int iN,stuNode stuSong[]);

int main()
{
	int iNum;
	stuNode stuSong[ic_max];

	while(cin >> iNum)
	{
		vInputData(iNum,stuSong);
		sort(stuSong+1,stuSong+1+iNum,bCmp);
		vPrintAns(iNum,stuSong);
	}

	return 0;
}

void vInputData(int iN,stuNode stuSong[])
{
	string strTemp;

	getchar();
	for(int i=1; i<=iN; i++)
	{
		getline(cin,strTemp);//默认/n
		vGetData(strTemp,stuSong[i]);
	}
}

void vGetData(string strT,stuNode& stuSong)
{
	int iPrio;
	int iBlank;//标记最后一个空格的位置
	string strPrio;//获取优先级的字符串形式

	iPrio = 0;
	//获取最后一个空格的位置
	for(int i=strT.size()-1; i>=0; i--)
	{
		if(strT[i] == ' ')
		{
			iBlank = i;
			break;
		}
	}
	//截取相应子段
	stuSong.strSong = strT.substr(0,iBlank);
	strPrio = strT.substr(iBlank+1,strT.size()-iBlank);
	//将字符串转换为数字
	for(int i=strPrio.size()-1; i>=0; i--)
	{
		if(strPrio[i] == '-')
		{
			iPrio *= -1;
		}
		iPrio += (strPrio[i]-'0') * (int)pow(10.0,1.0*(strPrio.size()-1-i));
	}
	stuSong.iPriority  = iPrio;
}

bool bCmp(const stuNode& stuA,const stuNode& stuB)
{
	return stuA.iPriority < stuB.iPriority;
}

void vPrintAns(int iN,stuNode stuSong[])
{
	int iTotal;

	iTotal = iN;
	//获取优先级<=0的个数
	for(int i=1; i<=iN; i++)
	{
		if(stuSong[i].iPriority <= 0)
			iTotal --;
		else
			break;
	}
	cout << iTotal << endl;
	for(int i=iN-iTotal+1; i<=iN; i++)
	{
		cout << stuSong[i].strSong << endl;
	}
} 
分享到:
评论

相关推荐

    人工智能程序设计-高级Python程序设计-西工大-noj前60道-py代码.zip

    2. **字符串处理**:在007字符串处理.py中,我们可以学习到Python对字符串的处理,包括字符串的拼接、切片、查找、替换、分割等操作,这些都是处理文本数据时必备的技能。Python的字符串是不可变的,因此在进行字符...

    西工大noj100题答案-西工大NOJ题库解析-C++实现最大公约数算法

    内容概要:本文介绍了西北工业大学(简称西工大)NOJ(西北工业大学在线评测系统)中的一个经典题目及其解法。通过C++语言实现了一个简单而高效的欧几里得算法,用于求解两个整数的最大公约数(辗转相除法)。文中...

    西工大NOJ社区C语言部分难题

    NOJ6.1 字符串排序是西工大NOJ社区C语言部分难题中的一个字符串处理问题。该问题要求编写一个程序,能够对字符串进行排序。该问题需要使用字符串处理函数和排序算法来解决。在解决这个问题时,需要注意字符串的比较...

    第6季字符串处理裴新凤(1)

    本主题“第6季字符串处理裴新凤(1)”聚焦于西北工业大学NOJ在线评测系统的第六季比赛中的字符串相关题目,这些题目旨在帮助学习者提升对字符串操作的理解和运用能力。"The Clock"这一描述可能暗示着一个特定的题目,...

    西工大noj100题答案-西工大NOJ编程题详解:欧几里得算法求最大公约数

    内容概要:本文详细介绍了西北工业大学在线评测系统(NOJ)中的一道经典编程题——求两个整数的最大公约数。通过欧几里得算法(辗转相除法)的具体实现和解释,帮助读者理解和掌握该算法的原理。参考代码使用了C++...

    西北工业大学数据结构noj_1-6题

    在“西北工业大学数据结构noj_1-6题”中,我们可以推测这是一系列与数据结构相关的编程练习题目,旨在帮助学生理解和应用各种数据结构。以下是基于这些题目可能涵盖的一些关键知识点的详细解释: 1. **线性数据结构...

    西北工业大学 C++程序设计 noj习题答案

    4. **字符串处理**:涉及字符串的定义、拷贝、比较、加密编码、逆序等操作,以及字符串函数的使用,如`strcpy`, `strlen`, `strcat`, `strcmp`等。 5. **结构体与类**:可能包含简单的面向对象编程,如自定义数据...

    西工大noj答案

    数组不仅能够存储多个同类型数据,还可以通过索引访问特定元素,这在处理字符串时尤为重要。例如,字符数组a用于存储用户输入的字符串,通过getchar函数逐个接收字符并存储到数组中。掌握字符数组的使用对于理解字符...

    NOJ答案(附目录).docx

    1. “1“的传奇:该题考察了字符串处理和算法设计的能力。解题需要使用动态规划和贪心算法来解决问题。 知识点:动态规划、贪心算法、字符串处理。 2. A+B:该题是经典的算法题,考察了基本的算术运算和变量赋值的...

    西工大noj答案完整版.doc

    - **字符串操作**:如"字符串排序"、"字符串逆序"、"字符串替换",这些涉及字符串处理,包括比较、反转、替换等操作。 2. **数据结构**: - **链表操作**:如"插入链表节点"、"链表动态增长或缩短"、"链表节点...

    NOJ-nojNOJ-noj

    noj noj noj noj noj

    hzv-nojhzv-noj

    riscv noj noj noj noj noj

    NJUPT-Yellow-Page-noj

    :yum: noj noj noj noj noj

    西工大C语言noj大作业

    9. **标准库函数**:如字符串处理(strcat, strcpy, strcmp等)、数学函数(sqrt, pow等)、输入输出(printf, scanf等)等。 10. **编程规范**:良好的编程风格,包括注释、命名规则、代码组织等。 完成这样的大...

    西工大noj答案完整版.zip_C noj答案_noj答案_noj答案c语言_plusj9f_西工大NOJ答案

    《西北工业大学NOJ在线评测系统C语言答案解析》 在编程学习的过程中,实践与测试是提升技能的关键步骤。西北工业大学的NOJ(Network Online Judge)在线评测系统为广大学者提供了一个良好的平台,用于检验和提升...

Global site tag (gtag.js) - Google Analytics