又是一道水题,转语言就是这样,经常被水题虐翻。。。
这种水题似乎不适合写出来,不过也没办法,没题目交了
字符串处理:
RQNOJ144 伯虎点秋香
题目描述
题目描述:
上次唐伯虎点秋香那是秋香自己跑出来滴,这次他可要真的自己点了,下面由我来描述一下点的规则.当然事先要列举所有姑娘的匿名咯,我要对他进行1次提问,我问他对第几个姑娘感兴趣,他选的当然是他的意中人咯.
输入格式
第一行为一个整数小于1001的整数n,k.从第二行到第n+1行是对每个姑娘的名字.
输出格式
输出文件有且仅有一行,为他点中的“秋香”即第k个名字
样例输入:
5 3
faff
adf
beig
plaie
zfdeegeetulae
样例输出:
faff
必须吐槽RQNOJ的设计,怎么复制都不行。。。
思路很明显:读入,将可爱的字符串们进行比较排序(主要是我不会写C++字符串快排,就用了个冒泡),输出
无聊的思路,但是第一次做字符串处理总会有麻烦的。。。。。
代码
#include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> using namespace std; char strings[2005][2005]; char tmp[2005]; int n,k,i,j; int main() { cin>>n>>k; for (i=1;i<=n;i++) cin>>strings[i]; for (i=1;i<=n-1;i++) { for(j=i+1;j<=n;j++) { if (strcmp(strings[i],strings[j])>0) { strcpy(tmp,strings[i]); strcpy(strings[i],strings[j]); strcpy(strings[j],tmp); } } } cout<<strings[k]; return 0; }
-
结果
- 测试点1 Accepted / 4ms / 7048kB
- 测试点2 Accepted / 15ms / 7048kB
- 测试点3 Accepted / 27ms / 7048kB
- 测试点4 Accepted / 50ms / 7048kB
- 测试点5 Accepted / 42ms / 7048kB
- 测试点6 Accepted / 20ms / 7048kB
- 测试点7 Accepted / 34ms / 7048kB
- 测试点8 Accepted / 62ms / 7048kB
- 测试点9 Accepted / 25ms / 7048kB
- 测试点10 Accepted / 10ms / 7048kB
过是可以轻松过掉,但是居然有耗时。。。据说有神牛5行代码。。不是很相信
反思一下,字符串处理:1.赋值是没有用的 不能写string1=string2;要写strcpy(string1,string2);(前面的写法会报错)
2.比较大小不能用 if (string1>string2) 要写 if (strcmp(string1,string2)>0) ;(前面的写法测试中似乎可以过,但是在实际代码运行中不会起到作用,整个冒泡排序将无效)
3.定义字符串:如代码 char strings[2005][2005];
char tmp[2005];
char tmp[2005];
但是切记,一切关于字符串的都要include<cstring>