Advertisement

第1节:暴力算法

阅读量:

适用于以下两种情形:

  • 可以提前明确每个状态所包含的元素数量N;
  • 状态中各元素的可能取值构成一个连续的区间;

对暴力算法的优化策略包括:

  • 降低整体搜索过程中所需遍历的状态数量;
  • 借助关键信息减少冗余计算的出现;
  • 将原始问题分解为若干更易处理的子问题;
  • 结合问题特性实施针对性剪枝操作;
  • 引入其他类型的算法进行协同处理;

求解一个字符串中所有元素的组合情况

例如,“1,2”的组合形式包括:{},{1},{2},{1,2}

对于每一个元素而言,存在被选中或未被选中的两种可能性,因此可以通过二进制位的方式来加以表示。

复制代码
 int fun(string s)

    
 {
    
     int n = (1 << s.size());
    
     int i = 0;
    
     int j = 0;
    
     int len = s.size();
    
     for (i = 0; i < n; ++i) {
    
     for (j = 0; j < len; ++j) {
    
         if ((i >> j) & 1) cout<<s[j];
    
     }
    
     cout<<endl;

全部评论 (0)

还没有任何评论哟~