排列组合问题,求高效程序或者算法思想

ithiker 2012-04-17 10:01:49
现有两个文本1.txt,2.txt,1.txt文本内容为

1
2
3
4
5

2.txt文本内容为

a
b
c
d
e
f
g

由这两个文本的每行相互组合生成一个新的文本3.txt
要求3.txt内容为:

1a
1b
1c
1d
1f
1g
2a
2b
2c
2d
.
.
.
5f
5g

上面为示例,数据量较小,求高效程序或者算法思想
...全文
163 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 7 楼 的回复:
引用 6 楼 的回复:
引用 3 楼 的回复:
数据量小,不用管什么算法效率。
数据量大,瓶颈在IO上,所以基本也不用考虑算法。只要让IO达到最高就是了(如,多线程,一个负责读,一个负责写,一个负责拼装)。

非常感谢~
主要是为了处理大数据来的,可能是多个文本,比如文本1中的数据由多个文本组成,文本2中的数据也是由多个文本组成,如何把这两类数据拼装组合形……
[/Quote]
这个组合,用多线程的确没多大差异。拼装应该花不了多少CPU。是否能减少时间,还得实际写出来后运行看看。
至善者善之敌 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 6 楼 的回复:
引用 3 楼 的回复:
数据量小,不用管什么算法效率。
数据量大,瓶颈在IO上,所以基本也不用考虑算法。只要让IO达到最高就是了(如,多线程,一个负责读,一个负责写,一个负责拼装)。

非常感谢~
主要是为了处理大数据来的,可能是多个文本,比如文本1中的数据由多个文本组成,文本2中的数据也是由多个文本组成,如何把这两类数据拼装组合形成文本3,当然文本3也可以是多……
[/Quote]

多线程的思想是不分语言的,再者两者的方法差异也不大
至善者善之敌 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
数据量小,不用管什么算法效率。
数据量大,瓶颈在IO上,所以基本也不用考虑算法。只要让IO达到最高就是了(如,多线程,一个负责读,一个负责写,一个负责拼装)。
[/Quote]

++++++++
ithiker 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
引用 3 楼 的回复:
数据量小,不用管什么算法效率。
数据量大,瓶颈在IO上,所以基本也不用考虑算法。只要让IO达到最高就是了(如,多线程,一个负责读,一个负责写,一个负责拼装)。

非常感谢~
主要是为了处理大数据来的,可能是多个文本,比如文本1中的数据由多个文本组成,文本2中的数据也是由多个文本组成,如何把这两类数据拼装组合形成文本3,当然文本3也可以是多个文本组成。
没有太接触……
[/Quote]
额,写错了,没有接触到C++中的多线程。接触的是Java的多线程,也不深入。
ithiker 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
数据量小,不用管什么算法效率。
数据量大,瓶颈在IO上,所以基本也不用考虑算法。只要让IO达到最高就是了(如,多线程,一个负责读,一个负责写,一个负责拼装)。
[/Quote]
非常感谢~
主要是为了处理大数据来的,可能是多个文本,比如文本1中的数据由多个文本组成,文本2中的数据也是由多个文本组成,如何把这两类数据拼装组合形成文本3,当然文本3也可以是多个文本组成。
没有太接触到Java多线程的东西,读、写、拼装之间的数据如何保持同步,大侠能否就上面文本1、2、3的例子帮我写个示例程序
nice_cxf 2012-04-17
  • 打赏
  • 举报
回复
如果1,2本身没重复并且无需换序直接循环写入就是了,如果需要换序那么最多要考虑一下重复输出的问题(比如12里面都有5,6)没什么高效的算法把
ithiker 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
每一行都没重复吗?而且没看出来和排列组合有什么关系。。

C/C++ code


ifstream f1("1.txt"),f2("2.txt");
list<string> l1,l2;
ofstream f3("3.txt");
string s;
while(getline(f1,s),!f1.eof())
{
l1.push_back(s);
}
while(g……
[/Quote]
是个拼装组合问题,每行没有重复
luciferisnotsatan 2012-04-17
  • 打赏
  • 举报
回复
数据量小,不用管什么算法效率。
数据量大,瓶颈在IO上,所以基本也不用考虑算法。只要让IO达到最高就是了(如,多线程,一个负责读,一个负责写,一个负责拼装)。


evencoming 2012-04-17
  • 打赏
  • 举报
回复
每一行都没重复吗?而且没看出来和排列组合有什么关系。。
[code=C/C++]
ifstream f1("1.txt"),f2("2.txt");
list<string> l1,l2;
ofstream f3("3.txt");
string s;
while(getline(f1,s),!f1.eof())
{
l1.push_back(s);
}
while(getline(f2,s),!f2.eof())
{
l2.push_back(s);
}
for(list<string>::iterator i1=l1.begin();i1!=l1.end();++i1)
{
for(list<string>::iterator i2=l2.begin();i2!=l1.end();++i2)
{
f3<<(*i1)<<(*i2)<<"\n";
}
}
f1.close();
f2.close();
f3.close();

[/CODE]
muyi66 2012-04-17
  • 打赏
  • 举报
回复
这个直接简单的两层循环。每条结果都是直接生成,已经没有更高效的算法了。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧