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

📄 alphabetacpp.cpp

📁 AlphaBeta剪枝算法
💻 CPP
字号:
#include <iostream>
#include <cmath>
#include <vector>
#include <cstring>
#include "Gametree.h"
using namespace std;
typedef vector<node>  GameTree;//博弈树类
void display(GameTree &T);
int main(int argc,char *argv[])
{
	int i,j;
	int slect;
	if(argc<2)
	{ 
		printf("There is no other arguments sent to main except Olympic.exe!\n ");
        exit(1);
	}
    printf("There are %d command-line arguments sent to main \n",argc);
    for(i=0; i<argc;i++)
		printf("argv[%d] : %s\n", i , argv[i]);

		FILE *ftree1,*ftree2,*mytree;        //从文件中获取初始状态的信息
		if((ftree1=fopen(argv[1],"r+"))==NULL)
			cout<<"The file text1 cannot be opened!"<<endl;
		if((ftree2=fopen(argv[2],"r+"))==NULL)
			cout<<"The file text2 cannot be opened!"<<endl;
		cout<<"请选择测试文件  1:  tree1; 2:  tree2 "<<endl<<"输入-> ";
        cin>>slect;
		switch (slect)
		{ 
		case 1:mytree=ftree1;
			   break;
		case 2:mytree=ftree1;
			   break;
		default: cout<<"ERROR!"<<endl;break;
		}
		
	    GameTree Tree;
		node temp;
		temp.depth=0;temp.father=-1;temp.sub=0;temp.val=0;temp.flag=0;
		char _name[4];char _c;
		int Depth=1;	int father=-1; int _value;

		fscanf(mytree,"%s",&_name);    //读取ROOT A
		fscanf(mytree,"%s",&_name);
		temp.depth=Depth;
		temp.father=-1;                //头结点无父亲节点
		strcpy(temp.name,_name);
		Tree.push_back(temp);
        _c=_name[0];
        Depth++;
		while (1)
		{	
			fscanf(mytree,"%s",&_name);
			if(strcmp(_name,"VALUE")==0) break;
			if (_name[0]!=_c)
			{
				Depth++;_c=_name[0];
			}

			for (i=0;i<Tree.size();i++)
			{
				if (strcmp(_name,Tree[i].name)==0)
				{
					father=i;
				}
			}			
			fscanf(mytree,"%s",&_name);
			for(j=0 ;strcmp(_name,"END")!=0 ;fscanf(mytree,"%s",&_name),j++)
			{
				temp.depth=Depth;
				temp.father=father;
				strcpy(temp.name,_name);
				Tree.push_back(temp);	
			}		
			Tree[father].sub=j; //子节点个数
		}
                                //末端节点赋值
			fscanf(mytree,"%s",&_name);
			while (strcmp(_name,"END")!=0)
			{	
				fscanf(mytree,"%d",&_value);
				for (i=0;i<Tree.size();i++)
				{
					if (strcmp(_name,Tree[i].name)==0)
					{
						Tree[i].val=_value;
					}
				}	
				fscanf(mytree,"%s",&_name);
			}
			display(Tree);
  return 1;
}


void display(GameTree &T)
{
	int size=T.size();
	for (int i=0;i<size;i++)
	{
		cout<<T[i].name<<" "<<T[i].depth<<" "<<T[i].father<<" "<<T[i].val<<" "<<T[i].sub<<endl;
	}
}

⌨️ 快捷键说明

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