Redian新闻
>
Re: 以人为中心必然得出错误的结论 (转载)
avatar
Re: 以人为中心必然得出错误的结论 (转载)# Joke - 肚皮舞运动
B*t
1
题目:找dict中最长的单词,这个单词必须由dict里的单词组成。
bool myfunc(string s1, string s2)
{
return (s1.size() > s2.size());
}
bool findLongestWord_helper(string &s, map &hm)
{
for(int i = 1; i <= s.size(); i++)
{
string sub_f(s, 0, i);
if(hm[sub_f])
{
if(i == s.size())
return true;
string sub_b(s, i, s.size()-i);
if(findLongestWord_helper(sub_b, hm))
return true;
}
}
return false;
}
string findLongestWord(vector &vs)
{
string result("");
sort(vs.begin(), vs.end(), myfunc);
map hashmap;
for(int i = 0; i < vs.size(); i++)
hashmap[vs[i]] = true;

for(int i = 0; i < vs.size(); i++)
{
hashmap[vs[i]] = false;//加上这句就好了
if(findLongestWord_helper(vs[i], hashmap))
{
result = vs[i];
break;
}
}
return result;
}
avatar
l*a
2
【 以下文字转载自 TrustInJesus 讨论区 】
发信人: BibleEngine (圣经引擎), 信区: TrustInJesus
标 题: Re: 以人为中心必然得出错误的结论
发信站: BBS 未名空间站 (Wed Oct 17 14:41:50 2012, 美东)
只能用神的律法
不能用人的定义,神的律法是不变的,而人的定义会随着时间地点人物和环境而变化。
所以人的良心的功用本身就受到了玷污。
如果以人为中心则每个人都有他自己的标准,而这些标准都是不一样的。
例子太多了
河童是一个例子,童养媳,有些地方给女婴割礼,黑老大也讲盗亦有道,还有神庙里的
妓女,等等。
神的律法的核心就在道德律,总结就是爱神和爱人如己。
其实我另一个帖子里说过了,神就是标准,真,善,圣洁,公义,祂就是标准,与标准
背离的都是错误和不完全。
回过头来说杀婴是不是道德也是一样,神杀的就是道德,神命令杀的也是道德的。
神不同意杀的却杀的,都是不道德的。
如果一个人说神不道德,这个本身就说明这个人背离了神的标准,换句话说实际上是这
个人自己的不道德。
avatar
c*t
3
为什么这么复杂?还要用hashmap? 直接扫一遍不行吗?

【在 B********t 的大作中提到】
: 题目:找dict中最长的单词,这个单词必须由dict里的单词组成。
: bool myfunc(string s1, string s2)
: {
: return (s1.size() > s2.size());
: }
: bool findLongestWord_helper(string &s, map &hm)
: {
: for(int i = 1; i <= s.size(); i++)
: {
: string sub_f(s, 0, i);

avatar
e*3
4
所以说了,神的道德和人的道德不是一回事。如果你信神,你必须抛弃你的作为人的道
德。也就是说,你不是人了,才能信神。
avatar
e*e
5
小骑士和冷骑士,双骑相逢!
avatar
b*n
6
基督徒没有人性,大家早就知道了
avatar
d*g
7
for(int i = 0; i < vs.size(); i++)
{
if(findLongestWord_helper(vs[i], hashmap))
{
result = vs[i];
break;
}
}
为什么这里break了?不是要找最长的么?你这里只是找到一个由dict里面的单词构成
的单词之后就break了吧?
avatar
s*h
8
人性是人的性,是会变的,基督徒的是神性。
或者没练到家的差一点,是神经。

【在 b*****n 的大作中提到】
: 基督徒没有人性,大家早就知道了
avatar
B*t
9
求问一遍怎么扫

【在 c********t 的大作中提到】
: 为什么这么复杂?还要用hashmap? 直接扫一遍不行吗?
avatar
B*t
10
我把dict sort了的 从最长的开始找 找到就可以退出了

【在 d*********g 的大作中提到】
: for(int i = 0; i < vs.size(); i++)
: {
: if(findLongestWord_helper(vs[i], hashmap))
: {
: result = vs[i];
: break;
: }
: }
: 为什么这里break了?不是要找最长的么?你这里只是找到一个由dict里面的单词构成
: 的单词之后就break了吧?

avatar
g*n
11
这两句放在循环里面好像有点奇怪:
for(int i = 1; i <= s.size(); i++)
{
. . .
{
if(s.size() == 0)
return true;
既然i从1开始, 那么(s.size() == 0) 就不会为true?
avatar
c*t
12
haha, my baby 骑士.
下面这样难道不行?我不会c++, 大概写的。是我没读懂题吗?
string findLongestWord(vector &vs)
{
int maxlen=0;
string longest="";
for(int i=0; i< vs.size(); i++){
if(vs[i].length > maxlen){
maxlen=vs[i].length;
longest=vs[i];
}
}
return longest;
}

【在 B********t 的大作中提到】
: 求问一遍怎么扫
avatar
e*e
13
"题目:找dict中最长的单词,这个单词必须由dict里的单词组成。"
是这个单词必须由dict里的<>单词组成?
例如:dict: foot, ball, football, basketball
result: football
请问小骑士是这样的末?

【在 c********t 的大作中提到】
: haha, my baby 骑士.
: 下面这样难道不行?我不会c++, 大概写的。是我没读懂题吗?
: string findLongestWord(vector &vs)
: {
: int maxlen=0;
: string longest="";
: for(int i=0; i< vs.size(); i++){
: if(vs[i].length > maxlen){
: maxlen=vs[i].length;
: longest=vs[i];

avatar
c*t
14
好像弄明白你的题意了。虽然我不懂c++,不过我觉得你的问题是,findLongestWord_
helper又想split to several words才能true, 又想如果剩一个词也要true
看看改成下面的行不
bool findLongestWord_helper(string &s, map &hm,bool hasSplit)
{
for(int i = 1; i <= s.size(); i++)
{
string sub_f(s, 0, i);
if(hm[sub_f])
{
if(i==s.size() ) return hasSplit;
string sub_b(s, i, s.size()-i);
if(findLongestWord_helper(sub_b, hm, true))
return true;
}
}
return false;
}
再继续说说,我的一点建议
1. c++没有hashset吗?如果有,应该把map换成set
2. 凡是findLongestWord_helper返回结果为true的都应该存在一个hashset里,这个
hashset 就是由dict里的单词组成的单词的cache,避免重复计算。

★ 发自iPhone App: ChineseWeb 7.8
★ 发自iPhone App: ChineseWeb 7.8

【在 B********t 的大作中提到】
: 题目:找dict中最长的单词,这个单词必须由dict里的单词组成。
: bool myfunc(string s1, string s2)
: {
: return (s1.size() > s2.size());
: }
: bool findLongestWord_helper(string &s, map &hm)
: {
: for(int i = 1; i <= s.size(); i++)
: {
: string sub_f(s, 0, i);

avatar
j*2
15
是150里那道吗?
avatar
B*t
16
啊。。。。我知道我错在哪了。。。 我应该只检查其它的单词 原代码所有单词
都检查了所以不管怎么样都会返回true....... thanks啦!

【在 e****e 的大作中提到】
: "题目:找dict中最长的单词,这个单词必须由dict里的单词组成。"
: 是这个单词必须由dict里的<>单词组成?
: 例如:dict: foot, ball, football, basketball
: result: football
: 请问小骑士是这样的末?

avatar
B*t
17
噢 是的 我已经改过来了 是当i == s.size() 时就可以退出了 typo 我最初的
问题不是出在这里 是出在我连这个单词本身也检查了 所以永远都会返回true

【在 g*********n 的大作中提到】
: 这两句放在循环里面好像有点奇怪:
: for(int i = 1; i <= s.size(); i++)
: {
: . . .
: {
: if(s.size() == 0)
: return true;
: 既然i从1开始, 那么(s.size() == 0) 就不会为true?

avatar
B*t
18
小冷骑士 多谢建议 我也刚学c++不久
c++里有set和map set是avl树实现的 map是红黑树实现的 为什么这里要用set而不
是map呢?
如果用set就是这样
bool myfunc(string s1, string s2)
{
return (s1.size() > s2.size());
}
bool findLongestWord_helper(string &s, set &hs)
{
for(int i = 1; i <= s.size(); i++)
{
string sub_f(s, 0, i);
if(hs.find(sub_f) != hs.end())
{
if(i == s.size())
return true;
string sub_b(s, i, s.size()-i);
if(findLongestWord_helper(sub_b, hs))
return true;
}
}
return false;
}
string findLongestWord(vector &vs)
{
string result("");
sort(vs.begin(), vs.end(), myfunc);
set hashset;
for(int i = 0; i < vs.size(); i++)
hashset.insert(vs[i]);
for(int i = 0; i < vs.size(); i++)
{
hashset.erase(vs[i]);
if(findLongestWord_helper(vs[i], hashset))
{
result = vs[i];
break;
}
hashset.insert(vs[i]);
}
return result;
}

hasSplit)

【在 c********t 的大作中提到】
: 好像弄明白你的题意了。虽然我不懂c++,不过我觉得你的问题是,findLongestWord_
: helper又想split to several words才能true, 又想如果剩一个词也要true
: 看看改成下面的行不
: bool findLongestWord_helper(string &s, map &hm,bool hasSplit)
: {
: for(int i = 1; i <= s.size(); i++)
: {
: string sub_f(s, 0, i);
: if(hm[sub_f])
: {

avatar
B*t
19
恩 好像150里也有这道 是google的面试题吧

【在 j******2 的大作中提到】
: 是150里那道吗?
avatar
c*t
20
节省空间啊,map里面的value沒有用。另外我在我写的codes里改了一个bug. 现在应该
行了。

★ 发自iPhone App: ChineseWeb 7.8

【在 B********t 的大作中提到】
: 小冷骑士 多谢建议 我也刚学c++不久
: c++里有set和map set是avl树实现的 map是红黑树实现的 为什么这里要用set而不
: 是map呢?
: 如果用set就是这样
: bool myfunc(string s1, string s2)
: {
: return (s1.size() > s2.size());
: }
: bool findLongestWord_helper(string &s, set &hs)
: {

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。