啥也别说了
看C++和算法,眼泪哗哗的。。。
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
algorithm(14)
(rss)
pku/acm(59)
(rss)
数字图像(1)
(rss)
随笔档案
2010年5月 (1)
2010年3月 (5)
2009年3月 (1)
2008年12月 (1)
2008年11月 (66)
搜索
最新评论
1. re: ACM 2325 Persistent Number 大数相除
大数相除部分,貌似100/20的结果是错的。
--Raise
2. re: 字典树原理(转)
一看就是c++外行写的代码,
--ddd
3. re: ACM 1664 放苹果
赞。。新手 看了豁然开朗。.。谢谢了
--mokuku
4. re: 字典树原理(转)
代码风格不是很好
--ygqwna
5. re: 字典树原理(转)[未登录]
只有new,没有delete,必然内存泄露
--123
阅读排行榜
1. 字典树原理(转)(7964)
2. STL 堆排序使用和体会(转)(2047)
3. 二叉树实例(1710)
4. ACM 2325 Persistent Number 大数相除(1619)
5. 大概了解cin,cin.getline,cin.clear,cin.ignore,cin.get()的用法(1592)
评论排行榜
1. 字典树原理(转)(7)
2. ACM 1730 Perfect Pth Powers(3)
3. ACM 1929 Calories from Fat(2)
4. ACM 2325 Persistent Number 大数相除(2)
5. ACM 2316 SPIN(2)
Powered by:
博客园
模板提供:
沪江博客
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
ACM 1318 Word Amalgamation
晕死的题,就因为一个判断后的break循环弄了我半小时,还是看了前人的讨论才AC的。。。
先判断长度一致的string,再判断是否所有字符相同(顺序不同)
#include
<
iostream
>
#include
<
vector
>
#include
<
string
>
using
namespace
std;
bool
compare(
string
s1,
string
s2)
//
比较字符串
{
int
len
=
(
int
)s1.length();
int
*
use
=
new
int
[len];
memset(use,
0
,len
*
sizeof
(use));
for
(size_t i
=
0
;i
<
s1.length();i
++
)
{
for
(size_t j
=
0
;j
<
s2.length();j
++
)
{
if
(s1[i]
==
s2[j]
&&
use[j]
==
0
)
{
use[j]
=
1
;
break
;
//
注意啊,找到一个后就break了
}
}
}
for
(
int
i
=
0
;i
<
len;i
++
)
{
if
(use[i]
==
0
)
{
delete [] use;
return
false
;
}
}
delete [] use;
return
true
;
}
void
stringorder(vector
<
string
>
s)
//
输出字符串排序
{
int
*
a
=
new
int
[(
int
)s.size()];
memset(a,
0
,(
int
)s.size()
*
sizeof
(a));
int
n;
for
(size_t j
=
0
;j
<
s.size();j
++
)
{
n
=
0
;
for
(size_t i
=
0
;i
<
s.size();i
++
)
{
if
(a[n]
!=
0
)
{
n
++
;
}
if
(s[i]
<
s[n]
&&
a[i]
==
0
)
//
取最小字符串
{
n
=
(
int
)i;
}
}
cout
<<
s[n]
<<
endl;
a[n]
=
1
;
}
delete [] a;
}
int
main()
{
vector
<
string
>
words;
vector
<
string
>
unwords;
string
s;
bool
word
=
true
,end
=
false
;
while
(
1
)
//
输入判断
{
cin
>>
s;
if
(s
==
"
XXXXXX
"
&&
end
==
true
)
{
break
;
}
if
(s
==
"
XXXXXX
"
&&
end
==
false
)
{
word
=
false
;
end
=
true
;
continue
;
}
if
(word
==
true
)
{
words.push_back(s);
}
if
(word
==
false
)
{
unwords.push_back(s);
}
}
bool
find;
vector
<
string
>
order;
for
(size_t i
=
0
;i
<
unwords.size();i
++
)
{
find
=
false
;
order.clear();
for
(size_t j
=
0
;j
<
words.size();j
++
)
{
//
判断相同长度,再比较是否字母相同
if
(unwords[i].length()
==
words[j].length()
&&
compare(unwords[i],words[j])
==
true
)
{
order.push_back(words[j]);
find
=
true
;
}
}
if
(find
==
true
)
{
stringorder(order);
}
if
(find
==
false
)
{
cout
<<
"
NOT A VALID WORD
"
<<
endl;
}
cout
<<
"
******
"
<<
endl;
}
}
发表于 2008-11-11 00:22
hunter
阅读(431)
评论(0)
编辑
收藏
引用
所属分类:
pku/acm
只有注册用户
登录
后才能发表评论。
相关文章:
ACM 2402 Palindrome Numers
ACM 2325 Persistent Number 大数相除
ACM 2316 SPIN
ACM 2299 Ultra QuickSort 合并排序的应用
ACM 2291 Rotten Ropes
ACM 2275 Flipping Pancake reverse()函数的应用
ACM 2273 An Excel-lent Problem
ACM 2183 Bovine Math Geniuses
ACM 2141 Message Decowding
ACM 2140 Herd Sums
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理