zoukankan      html  css  js  c++  java
  • 10l7l3l倒水的for循环和queue的使用(待续

    1.讲解广度优先搜索以及普及优先级概念

    一个最基础的

    https://www.cnblogs.com/tlysMoodspace/p/11832181.html

    核心代码:

    b[0][0]=10; b[1][0]=7; b[2][0]=3;
    b[0][1]=10; b[1][1]=0; b[2][1]=0;
    //三杯子,初始只有10L的杯子是满的 
    // b[0][1]=1; b[1][1]=0; b[2][1]=0;
      if(b[0][i]!=0){
      //如果10L的杯子有酒 
        if(b[1][i]<7){
        //如果7L的杯子没满 
          if(b[0][i]+b[1][i]<7){
          //如果10L和7L杯子加起来不能补满7L的杯子 
            b[0][tail]=0;
            b[1][tail]=b[1][i]+b[0][i];
            //全倒入7L杯子 
            b[2][tail]=b[2][i];


        windows下Dev解10l7l3l倒水,for循环版本

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    	struct t{
    		int z[3];
    		int num;
    		int n[100];
    	}b[10050];
    	int stime=1;		//数字越大.休眠时间越久 
    	int m=0,i,j=0,k;
    	int time1=107,time2=103,time3=710,time4=73,time5=37,time6=310;
    	int head=1,tail=2,btime=0,bord;
    void zzzz(){ 
        b[tail].n[b[i].n[0]]=tail;
    	for(k=0;k<b[i].n[0];k++) b[tail].n[k]=b[i].n[k];
    	  b[tail].n[0]++; 
    	printf("
    	%d	%d	%d
    ",b[i].z[0],b[i].z[1],b[i].z[2]);
       	printf("%d	%d	%d	%d
    ",btime, b[tail].z[0],b[tail].z[1],b[tail].z[2]);
        _sleep(stime*1000); //休眠时间单位ms 
    	tail++; 
    }
    int a[6][3]={
    	0,1,2,
    	0,2,1, 
    	1,0,2,
    	1,2,0,
    	2,0,1, 
    	2,1,0 
    };
    int main()
    {
    	b[0].z[0]=10;	b[0].z[1]=7;	b[0].z[2]=3;	
    	b[1].z[0]=10;	b[1].z[1]=0;	b[1].z[2]=0;	b[1].n[0]=2;	b[1].n[1]=1;
    				//三杯子,初始只有10L的杯子是满的 
    //	b[0][1]=1;	b[1][1]=0;	b[2][1]=0;
    				//三杯子,初始10L的杯子是满的 
    	for(i=0;i<6;i++) {
    		for(j=0;j<3;j++) {
    		printf("%d ",a[i][j]);
    		}
    		printf("
    ");
    	}
    	m=0;
       while(head<tail){
       	if(m==1) break;
        btime++;
        bord=tail;
        for(i=head;i<bord;i++){
    	if(m==1) break; 
      		printf("
    %d	%d	%d	%d
    ",btime,b[i].z[0],b[i].z[1],b[i].z[2]);
      		for(j=0;j<6;j++){
        		if(b[i].z[0]==5||b[i].z[1]==5||b[i].z[2]==5){ m=1;break; }
    				//找到55平分则退出 
        		if(b[i].z[a[j][0]]!=0){      //如果第a[j][0]的杯子有水
    	   	 		if(b[i].z[a[j][1]]<b[0].z[a[j][1]]){
        				if(b[i].z[a[j][0]]+b[i].z[a[j][1]]<b[0].z[a[j][1]]){
    			    		b[tail].z[a[j][0]]=0;                
    					b[tail].z[a[j][1]]=b[i].z[a[j][0]]+b[i].z[a[j][1]];  	
        					b[tail].z[a[j][2]]=b[i].z[a[j][2]];            
    } else{ b[tail].z[a[j][0]]=b[i].z[a[j][0]]+b[i].z[a[j][1]]-b[0].z[a[j][1]]; b[tail].z[a[j][1]]=b[0].z[a[j][1]]; b[tail].z[a[j][2]]=b[i].z[a[j][2]]; } zzzz(); if(b[tail-1].z[a[j][0]]==5||b[tail-1].z[a[j][1]]==5||b[tail-1].z[a[j][2]]==5){ m=1; break; } } } } } head=bord; } if(m==1){ printf("找到了! "); for(k=1;k<b[tail-1].n[0];k++){ for(j=0;j<3;j++) printf("%d ",b[b[tail-1].n[k]].z[j]); printf(" "); } } }

    queue改造:


    using namespace std;    //懒

    struct Point
    {
      int x[3];
    };


    queue <Point> searchlist;

    
    

    void solvea()
    {
      Point a;

    //初始化
      for(int i=0;i<3;i++)
        a.x[i] = 0;
      searchlist.push(a);
      while(!searchlist.empty()){
        Point b = searchlist.front();  //取队列顶
        for(int i=0;i<3;i++)
          cout << temp.x[i] << " ";
        cout << endl ;
        searchlist.pop();  //弹
      }
    }




    欢迎来我们oj刷题 oj地址:http://www.npumdacm.top/
  • 相关阅读:
    Java学习--设计模式之创建型模式
    Java学习--设计模式简介
    Spring MVC 学习总结(十)——Spring+Spring MVC+MyBatis框架集成(IntelliJ IDEA SSM集成)
    Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)
    Spring MVC 学习总结(八)——Spring MVC概要与环境配置(IDEA+Maven+Tomcat7+JDK8、示例与视频)
    Spring MVC 学习总结(六)——Spring+Spring MVC+MyBatis框架集成
    Spring MVC 学习总结(五)——校验与文件上传
    Spring MVC 学习总结(四)——视图与综合示例
    Spring MVC 学习总结(三)——请求处理方法Action详解
    Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解
  • 原文地址:https://www.cnblogs.com/tlysMoodspace/p/11841109.html
Copyright © 2011-2022 走看看