⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plate.cpp

📁 基本的递归算法的例子
💻 CPP
字号:
#include <iostream>
#include "plate.h"
using namespace std;


struct PLATEDATE *Initplate(int *plate1,int *plate2,int *plate3,int platenum)
{
	struct PLATEDATE *platedate=(struct PLATEDATE*)malloc(sizeof(struct PLATEDATE));
	platedate->plate[0]=plate1;
	platedate->plate[1]=plate2;
	platedate->plate[2]=plate3;
	platedate->platenum[0]=platenum;
	platedate->platenum[1]=0;
	platedate->platenum[2]=0;
	platedate->platett=platenum;
	return platedate;
}

void Plateprint(struct PLATEDATE *platedate)
{
	int max=platedate->platenum[0]>platedate->platenum[1]?platedate->platenum[0]:platedate->platenum[1];
	max=max>platedate->platenum[2]?max:platedate->platenum[2];
	cout<<"plate 1		plate2		plate3"<<endl;
	for(int i=platedate->platett-1;i>=0;i--)
	{
		cout<<*(platedate->plate[0]+i)<<"		"<<*(platedate->plate[1]+i)<<"		"<<*(platedate->plate[2]+i)<<endl;
	}
}

void Platemove(int platenum,int src,int dest,struct PLATEDATE *platedate)
{
	if(platenum==0)
	{
		return;
	}
	int i=0;
	int platenumdofirst=platenum-1;
	int destdofirst=-1;
	if(platenum>1)
	{

		for(i=0;i<3;i++)
		{
			if(src==i)
			{
				continue;
			}
			if(dest==i)
			{
				continue;
			}
			destdofirst=i;
		}
		Platemove(platenum-1,src,destdofirst,platedate);
	}
	*(platedate->plate[dest]+platedate->platenum[dest])=*(platedate->plate[src]+platedate->platenum[src]-1);
	platedate->platenum[dest]++;
	*(platedate->plate[src]+platedate->platenum[src]-1)=0;
	platedate->platenum[src]--;
	Plateprint(platedate);

	Platemove(platenum-1,destdofirst,dest,platedate);

	return;
	
	
}

void Closeplate(struct PLATEDATE *platedate)
{
	free(platedate);
	return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -