从n个数字中取r个数的组合算法,并输出组合(C++)

本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/

 1 #include <algorithm>
 2 #include <vector>
 3 #include <iterator>
 4 #include <iostream>
 5 using namespace std;
 6 /**
 7  * 分析:组合无序,所以不妨设降序排列
 8  * 第一个解是[n,n-1,...,n-r+1]
 9  * 解的条件是位置i上的元素A[i]应该满足
10  * i+A[i]>=r
11  * 回溯法:对最后一个元素减一
12  * 如果满足条件则得到一个新解
13  * 如果不满足,一直向前回溯到该位满足为止
14  * 然后把满足的那位后面的依次等于前面减一
15  * 从而得到一组新解,然后继续
16  * 如果已经回溯到第一位仍不满足
17  * 则所有解都已经找到,终止
18  */
19 vector <vector <int> > comb(int n,int r){
20     vector <vector <int> > vv;
21     vector <int> tmp(r);
22     int i;
23     bool f=false;
24     for(i=0;i<r;i++)tmp[i]=n-i;
25     vv.push_back(tmp);
26     while(true){
27         tmp[r-1]–;
28         for(i=r-1;i>=0;i–){
29             if(tmp[i]+i>=r)
30                 break;
31             else{
32                 if(i==0){
33                     f=true;
34                     break;
35                 }
36                 tmp[i-1]–;
37                 if(tmp[i-1]+i-1>=r){
38                     for (int j=i; j < r; j++) {
39                         tmp[j]=tmp[j-1]-1;
40                     }
41                 }
42             }
43         }
44         if(f)break;
45         vv.push_back(tmp);
46     }
47     return vv;
48 }
49 

破解等式

本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/
给定等式 A B C D E   其中每个字母代表一个数字,且不同数字对应不
        D F G   同字母。编程求出这些数字并且打出这个数字的
      + D F G   算术计算竖式。
     ───────
     X Y Z D E
Read More »

野人与传教士

本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/
设有m个传教士和m个野人来到河边,打算乘一只船从右岸渡到左岸去。该船最大负载能力为n人,在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过河去呢?
Read More »

猎人过河

本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/
猎人带着一框草莓,一只羊和一条狼要过河。但是只有一条小船。条件如下:
* 一次只可以载一样东西。
* 如果让羊和草莓在一起,而猎人不在旁边的话,羊就会把草莓只掉。
* 如果让狼和羊在一起,而猎人不在旁边的话,狼就会把羊吃掉。 Read More »

韩信走马分油问题

本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/

方法很简单
方法一:
1、如果小桶空,从大桶到小桶
2、如果中桶满,从中桶到大桶
3、如果中桶空间能容纳小桶内的,把小桶全倒中桶
4、从小桶倒,把中桶倒满
方法二:完全类似,不过到油的方向为 大桶–>中桶–>小桶
Read More »

节气时刻推算歌决 量天尺 一掌诀

審詳春日莫他求,時正節真氣自酬,
五時二刻驚蟄是,十時四刻清明頭,
立夏一日三時六,芒種一日九時收,
二日二時二小暑,二日七時四刻秋,
白露三朝單六刻,寒露三朝六時周,
立冬三朝十一二,大雪細細兩雙流,
小寒四日九時六,五日三時打春牛,
節遇子時加一日,此為捷法記心頭。

量天尺
立春五日起庚由, 惊蛰倒退三时首。
一时一刻清明节, 立夏九时三刻收。
芒种两日退一时, 小暑三日五时求。
五日退三立秋节, 白露六日退一周。
寒露六日四时到, 立冬六日七时求。
大雪六日又四时, 小寒五日九时收。

一掌诀
前九年,二月中, 本年元旦日相同。
月月十五对初一, 千年万载不差宗。

历法数据

一个阴历月:29.530588天
回归年:365.24219879天(365日5小时48分45.5秒)
恒星年:365.25636天(365天6时9分9.5秒)

流星赶月

来自 齐鲁周易网,原帖地址:http://www.qlzhouyi.com/ShowArticle2.asp?ArticleID=195

一、 推算年干支口诀

掌上推算年干支,支子花甲起根源。
阳支都是旬开始,天干为甲尾四年。
隔位逆推十年正,顺推年尾五零三。
逐支加减六十数,掌上推算千万年。
Read More »

ip 和 数字转换的 php 代码

本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/

function ip2number($ip){
                $t=explode('.',$ip);
                $x=0;
                for($i=0;$i<4;$i++){
                    $x = $x*256+$t[$i];
             }
                return $x;
            }
            function number2ip($num){
                $t=$num;
                $a=array();
                for($i=0;$i<4;$i++){
                    $x=$t%256;
                    if($x<0)$x+=256;
                    array_unshift($a, $x);
                    $t = intval($t/256);
                }
                return implode('.',$a);
            }

ubuntu 下用 rpm 包安装 swi-prolog

本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/

虽然 ubuntu 的软件仓库中有swi-prolog 的 deb 包(包括xpce),但是安装后 xpce 不可用,帮助也就成了文本模式,也只能使用 edit 用 vim 模式编辑 , emacs 不可用,上官网可惜没有 deb 的包,但是有 rpm 包,于是用 alien 转换
sudo apt-get install alien
sudo alien pl-xxxx.xxx.pl
然后用 dpkg -i pl-xxxx.xxx.deb 安装即可