精华内容
下载资源
问答
  • 主要介绍了PHP实现字符串翻转功能的方法,结合实例形式对比分析了php使用递归与循环算法实现字符串反转功能的相关操作技巧,需要朋友可以参考下
  • 我们借助计算机快速处理数据的功能,让计算机重复的加工计算,这就构成了循环算法,其关键在于构建循环条件和循环体。 循环条件:每个循环有其循环的开始和结束的条件,否则死循环。 循环体:每次循环执行的步骤、...

    数据结构与算法之循环算法

    循环算法基本概念

    我们借助计算机快速处理数据的功能,让计算机重复的加工计算,这就构成了循环算法,其关键在于构建循环条件和循环体。

    循环条件:每个循环有其循环的开始和结束的条件,否则死循环。

    循环体:每次循环执行的步骤、变量、代码形式一致,而变量内存的数据发生改变。

    基本的设计方法如下两种
    “自顶向下”的循环算法设计方法
    自顶向下的设计方法是从全局走向局部、从策略走向详尽的设计方法。自顶向下是系统分解和细化的过程。
    首先,根据题意,总体规划设计算法的主要组成或步骤。
    其次,分别对各个步骤进行分解,理清各个子步骤的算法框架。
    最后,继续为各个子步骤算法进行细化,直至算法实现。

    由具体到抽象设计循环结构
    从给定的问题的具体特点为依据进行算法设计。由具体实例进行归纳,可以比较容易地得到抽象的表达式。
    首先:仔细了解问题的含义,从具体的问题中,归纳或抽象出具有普遍意义的共同特征。
    其次:根据归纳得到的共同特征,设计算法,构造出“不变式”的“循环条件”和“循环体”。
    最后:将问题进一步进行逐步细化, 最终得到解决问题的算法。

    循环算法代码粗讲

    自顶向下

    问题: 由1、2、3、4、5、6个数字组成不同数字的6位数,前1位能被1整除,前2位能被2整除,…,前6位能被6整除,求这样的6位数供有多少个?

    分析:总体分析得奇数位(第1、3、5位)为奇数(且5在第五位),偶数位为偶数。
    对偶数的判断:
    4只能在第六位:
    不能在第四位:第三位数只能为1或3, 14、34都不能被4整除,即前四位不能被4整除。
    不能在第二位:1+3+4=8不能被3整除,即前三位不能被3整除。
    6只能在第四位:若在第二位则1+3+6=10,不能满足前三位被3整除。
    2只能在第二位。
    对奇数位的判断:
    5只能在第五位,才能满足前五位能被5整除。
    1、3无法判断。
    上述通过数论方法进行的分析可以得到两个解。

    #include <cstdio.h>
    using namespace std;
    int main()
    {
      int a,b,c,d,e=5,f,count=0;
      for(a=1;a<5;a=a+2){
    for(b=2;b<=6;b=b+2){
       for(c=1;c<5;c=c+2){
         if(a==c|| (a+b+c)%3!=0) continue;
         for(d=2;d<=6;d=d+2){
            if(b==d||(10*c+d)%4!=0) 
               continue;
           for(f=2;f<=6;f=f+2){
            if(b=f||d==f) continue;
            count++;
           }
        }
      }
    }
       }
      return 0;
    }
    

    具体到抽象

    问题: 333(2006个3)减去77*…*7(100个7),得到的个位数和十位数字是多少?
    分析:
    可看成am–bn的最后两位数。
    分别求取am、bn 的 末尾两个数
    将结果相减在加上100用100取余即可得到问题的解

    #include<cstdio.h>
    using namespace std;
    int main(){
     int i,j,a=1,b=1;
     for(i=1;i<=2006;i++)
        a=a*3%100;
      for(i=1;j<=100;j++)
    b=b*7%100;
    printf(%d\n”,(a-b+100)%100);
    return 0;
    }
    

    比赛安排

    问题:
    设有2 n(n<=6)个球队进行单循环比赛,计划在2 n – 1天内完成,每个队每天进行一场比赛。设计一个比赛的安排,使在2 n – 1天内每个队都与不同的对手比赛。
    例如n=2时的比赛安排:
    队 1 2 3 4
    比赛 12 34 一天
    13 24 二天
    14 23 三天
    分析:
    用二维数组is来判断两个队之间是否进行过比赛0 没有 1 有
    用一维数组vis进行该轮各队是否已经安排,0未安排1安排

    #include<bits/stdc++.h>
     using namespace std;
     bool is[505][505],vis[505];
     int main(){ 
        int n;scanf("%d",&n);   
    	memset(is,0,sizeof(is));  //数组初始化为 0 
       	int T=(1<<n)-1;//2的n次方-1 
    	int ans=0;    //第几轮 
      	 while(T--)    { 
            memset(vis,0,sizeof(vis)); //初始化数组0   
    	    printf("<%d>",++ans);   
    	    bool bb=0;       //第一次打印标志 
    		for(int i=1;i<=(1<<n);i++)        
    		  {            
    		 	 if(!vis[i])     //若该队未安排       
    		 	 {                
    		  		vis[i]=1;                
    		  		for(int j=i+1;j<=(1<<n);j++)  //寻找比赛对手             
    		   			{                    
    		   		  if(!vis[j]&&!is[i][j]) //对应的队未安排,且没有进行过比赛                  
    		   				 {                       
    							vis[j]=1;is[i][j]=1;//安排比赛                        
    							if(bb)printf(",");                        
    								printf("%d-%d",i,j);                        
    							bb=1;break;                    
    						}                
    					}            
    			}        
    		}        
    	printf("\n");   
    	}    
    	 return 0;
    }
    
    展开全文
  • 循环算法的学习

    2018-06-02 22:53:23
    1.请编写程序 KY2_4.java,要求程序具有如下功能:求 1+2+…+100 之和,并将求和表达式与所求和都显示出来,即程序输出结果应该为:1+2+…+100=5050。package aa;public class ss {  static int a...
    1.请编写程序 KY2_4.java,要求程序具有如下功能:求 12+…+100 之和,并将求和表达式与所求的和都显示出来,即程序的输出结果应该为:12+…+100=5050
    package aa;
    public class ss {
     static int a=100;
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int sum = 0;
    for (int i = 1;i<=a;i++)
    sum=i+sum;
    for (int i=1;i<a;i++)
    System.out.print(i+"+");
          System.out.println("100="+sum);   
    }

    }
    展开全文
  • 算法-一重循环实现两重循环的功能

    千次阅读 2016-08-13 10:14:10
    二维表遍历一般需要两重循环来实现,但是两重循环的代码不如一重循环的代码清爽,很多情况下用一重循环遍历二维表也是一种不错选择。用一重循环遍历二维表关键是对下标处理,对于一个M×N二维表,可用以下...

    二维表的遍历一般需要两重循环来实现,但是两重循环的代码不如一重循环的代码清爽,很多情况下用一重循环遍历二维表也是一种不错的选择。用一重循环遍历二维表关键是对下标的处理,对于一个M×N的二维表,可用以下方法解出对应的二维下标:
    int row = i / M
    int col = i % N
    反过来,也可以用以下公式将二维坐标还原为一位坐标:
    int i = row * N + col

    转载自王晓华的《算法的乐趣》第396页

    展开全文
  • 自动生成循环算法

    2019-11-05 18:18:56
    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新界面设计 ,将会带来全新写作体验; 在创作中心设置你喜爱代码高亮...

    自动生成循环层数

    当我量化分析测试策略时,经常需要循环来组合参数,观察变化。为了提高效率,减少不必要的时间投入(懒),特以递归为基础设计以下算法,根据参数自动生成循环的层数和参数的范围。

    ##代码

    parameter=[-1,[0,4,0],[0,2,0]]#第一个参数控制循环层数不要动,之后每个列表结构为[循环的起始,循环的结束,现在参数的大小],列表的数量是循环的层数
    def recursion():
        if parameter[0]==-1:#初始化
            parameter[0]=len(parameter)-1
        if parameter[0]==0:#递归到最底层
            #放置你的函数
            print(parameter)
            return#递归的返回
        else:#往下继续递归
            parameter[0]-=1
            for a in range(parameter[len(parameter)-parameter[0]-1][0],parameter[len(parameter)-parameter[0]-1][1]):
                parameter[len(parameter)-parameter[0]-1][2]=a
                recursion()
            if parameter[len(parameter)-parameter[0]-1][2]==parameter[len(parameter)-parameter[0]-1][1]-1:
                parameter[0]+=1
    recursion()
    

    ##算法图解
    在这里插入图片描述
    输出

    [0, [0, 4, 0], [0, 2, 0]]
    [0, [0, 4, 0], [0, 2, 1]]
    [0, [0, 4, 1], [0, 2, 0]]
    [0, [0, 4, 1], [0, 2, 1]]
    [0, [0, 4, 2], [0, 2, 0]]
    [0, [0, 4, 2], [0, 2, 1]]
    [0, [0, 4, 3], [0, 2, 0]]
    [0, [0, 4, 3], [0, 2, 1]]
    
    展开全文
  • 主要介绍了PHP基于二分法实现数组查找功能,结合实例形式分析了while循环与递归调用算法实现二分查找功能的相关实现技巧,需要朋友可以参考下
  • C++单循环链表逆置的算法 ,非常不错的算法,还支持读文件功能
  • 掌握画程序框图的基本规则 图形符号 名称 功能 终端框 ( 起止框 ) 输入输出框 处理框 ( 执行框 ) 判断框 表示一个算法的起始和结束 表示一个算法输入和输出的信息 赋值计算 判断某一条件是否成立 , 成立时 在出口处...
  • * 实现循环单链表各种基本运算的算法 * 实验内容: * 编写一个程序实现循环单链表各种基本运算,并在此基础上设计一个主程序 * 完成如下功能: * (1)初始化循环单链表h * (2)依次采用尾部插入法插入a,b,c,d,e元素 * ...
  • * 实现循环双链表各种基本运算的算法 * 实验内容: * 编写一个程序实现循环双链表各种基本运算,并在此基础上设计一个主程序 * 完成如下功能: * (1)初始化循环双链表h * (2)依次采用尾部插入法插入a,b,c,d,e元素 * ...
  • 这篇文章首先列举出Kmeans核心的算法过程,并且会给出如何最大限度的在不用for循环的前提下,利用numpy, pandas的高效的功能来完成Kmeans算法。这里会用到列表解析,它是相当于速度更快的for循环,标题里指出的无for...
  • 这篇文章首先列举出Kmeans核心的算法过程,并且会给出如何最大限度的在不用for循环的前提下,利用numpy, pandas的高效的功能来完成Kmeans算法。这里会用到列表解析,它是相当于速度更快的for循环,标题里指出的无for...
  • 这篇文章首先列举出Kmeans核心的算法过程,并且会给出如何最大限度的在不用for循环的前提下,利用numpy, pandas的高效的功能来完成Kmeans算法。这里会用到列表解析,它是相当于速度更快的for循环,标题里指出的无for...
  • 源自:微信公众号 “数字芯片实验室”即便是功能仿真相同...下面针对Design Compiler逻辑综合工具谈谈代码风格:在上面的算法中,在for循环中执行“ADDR = ADDR+ OFFSET[I]”,因此是加法器逻辑重复8次! 此外,由于...
  • 分别使用while循环的方法和递归调用方法。// 二分法使用数组必须是有序,或升序,或降序$arr = array(1, 3, 5, 7, 9, 13);// 递归调用(相比较好理解function bsearch_r($v, $arr, $low, $high){if ($low > ...
  • 分别使用while循环的方法和递归调用方法。// 二分法使用数组必须是有序,或升序,或降序$arr = array(1, 3, 5, 7, 9, 13);// 递归调用(相比较好理解function bsearch_r($v, $arr, $low, $high){if ($low > ...
  • 1、讲授作业中关于循环输出菜单和选项功能的开发; 2、讲解通过标志变量来解决找到找不到问题;
  • 操作系统中的实验,用C语言实现循环首次适应算法的功能
  • 上一篇博客中,使用Java实现了单链LinkedList,博客链接如下: ...本篇博客将用循环双链实现LinkedList基本功能. 本篇博客要点如下: 双向链表简介 基本概念 存储结构 使用Java代码实现循环双...
  • 程序根据判断结果,执行不同的操作,这样就可以改变代码的执行顺序,从而实现更多的功能。Python中条件语句通常有if语句、if-else语句和if-elif-else语句。1.if语句if结构:满足条件就执行某个操作,不满足就不执行...
  • 堆积木是小孩子最爱玩游戏,但是因为小孩子好奇心(比如误食积木等)导致家长们越不愿意让孩子去玩积木,为了解决这个问题 TX 公司开发了一套 VR 积木游戏,你要做是将用户堆好积木在屏幕中显示出来。...
  • --下面是实现一个99乘法表脚本,第一种方法很常规,第二种方法我想了一个多小时,开始绕在Cross Apply连接这个功能上。 --我没打算用多重循环,但是感觉如果单靠两个表相连,另外一个表数据又要根据前一个表...
  • 循环计数器-最短算法

    2013-07-12 06:18:17
    功能:每次按钮按下,就会生成一个整数,然后达到最大值再返回0。 我想要最短实现算法。 比如像这样。从0到6,再从6到0。 count ++; count *= (count != 7);
  • 单链表,实现其基本功能 1.基本功能 判断该单链表是否为空 在单链表表头添加元素 单链表弹出操作 在单链表表尾添加元素 删除表中最后元素 查询表中是否存在所给定表元素 打印链表操作 迭代器(好处:如果...
  • 关注:递归算法的设计重点在于找到“递归”的部分,即重复调用函数,改变部分相关变量 设f(L,x)的功能是:删除以L为首结点指针的单链表中所有值等于x的结点,显然有f(L->next,x) 1.通用逆置函数:遍历循环+头尾...
  • 这篇文章首先列举出Kmeans核心的算法过程,并且会给出如何最大限度的在不用for循环的前提下,利用numpy, pandas的高效的功能来完成Kmeans算法。这里会用到列表解析,它是相当于速度更快的for循环,标题里指出的无for...
  • 实现乘法口诀助记功能的关键算法 注意:使用循环结构语句实现。 System.out.println("九九乘法表:");//输出 int i;int j; //定义变量i,j for(i = 1;i <= 9;i++) //循环控制数字i,行 { for(j =1; j ...
  • Spring在注入bean时候会做循环依赖检查...我们先来考虑,Spring是如何实现注入功能的,在注入A之前,如果A依赖B那么需要先注入B,然后依次类推下去,明显,这是一个递归调用,Spring在其BeanFactory实现类中,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,816
精华内容 726
关键字:

循环算法的功能