发新话题
打印

再来一道算法题

还有, 我不是很明白你说的意思:
“就从abcdefgh开始排,现在已经排到d c h g f e b a了,前面的就不用管了,就让你排d c h g f e b a下一个”

你是按照什么规律从abcdefgh排到d c h g f e b a的?

TOP

引用:
Originally posted by WinHack at 2005-10-31 12:02 AM:
还有, 我不是很明白你说的意思:
“就从abcdefgh开始排,现在已经排到d c h g f e b a了,前面的就不用管了,就让你排d c h g f e b a下一个”

你是按照什么规律从abcdefgh排到d c h g f e b a的?
比如有abc,排下来是abc, acb, bac, bca, cab, cba, 按字典序排, 如果现在已经排到了bca, 下一个是什么?怎么求?
LibUIDK-企业级MFC界面库
从此不刷下载量了,改刷单了!

TOP

引用:
Originally posted by WinHack at 2005-10-31 12:02 AM:
还有, 我不是很明白你说的意思:
“就从abcdefgh开始排,现在已经排到d c h g f e b a了,前面的就不用管了,就让你排d c h g f e b a下一个”

你是按照什么规律从abcdefgh排到d c h g f e b a的?
字典序
LibUIDK-企业级MFC界面库
从此不刷下载量了,改刷单了!

TOP

引用:
Originally posted by WinHack at 2005-10-31 12:02 AM:
还有, 我不是很明白你说的意思:
“就从abcdefgh开始排,现在已经排到d c h g f e b a了,前面的就不用管了,就让你排d c h g f e b a下一个”

你是按照什么规律从abcdefgh排到d c h g f e b a的?
字典序
LibUIDK-企业级MFC界面库
从此不刷下载量了,改刷单了!

TOP

恩,我了解了。 ;)

[quote]Originally posted by [i]psbeyond[/i] at 2005-11-2 12:03:
字典序
[/quote]

TOP

为什么我的贴子显示不出来,好几次了.
LibUIDK-企业级MFC界面库
从此不刷下载量了,改刷单了!

TOP

这是我用两分钟写出来的,如果数据处理量不大够用了。没啥特色就是好懂,我是实用主义者。宁愿别人说我的程序真简单,而不是真聪明。
#include <set>
#include <deque>
#include <algorithm>
#include <iostream>
using namespace std;
set<char> sc;
deque<char> dc;
char * s = "ABCD";
int t=0;
void prt(char c) { cout<<c<<" "; }
void dojob(int lv) {
        if(!lv--) {
                                cout<<"["<<++t<<"] ";
                for_each(dc.begin(), dc.end(), prt);
                cout<<endl;
        }
        for(int i=0; i<strlen(s); ++i)
                if( sc.find(s[i])==sc.end() ) {
                        sc.insert(s[i]); dc.push_back(s[i]);
                        dojob(lv);
                        sc.erase(s[i]); dc.pop_back();
                }
}
void main() {
        dojob(strlen(s));
        cout << "tatal: " << t << endl;
}

TOP

晕,用了递归还用deque

TOP

不用deque拿什么保存中间结果?链表?

TOP

用了递归直接输出就行

TOP

发新话题