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

📄 code.cpp

📁 利用一个递归算法
💻 CPP
字号:
// Code.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;

class Data
{
private:
	int* Idata;

public:
	Data(int* data,int length);
	void encipher(int* input_data,int* output_data,int length);
	void decipher(int* input_data,int* output_data,int length);
	bool correctdata(int* input_data,int data,int position);
};

Data::Data(int* data,int length)
{
	int i;
	Idata=new int[length];
	for(i=0;i<length;i++)
	{
		Idata[i]=data[i];
	}
//	for(i=0;i<length;i++)
//	{cout<<Idata[i]<<' ';}
}

void Data::encipher(int* data,int* Odata,int length)
{
	int count=0;
	int i=0;
	if(length<=0)
		cout<<"you must input the correct length."<<endl;
	else
		while(i<length)
		{
			for(int j=0;j<i;j++)
				if(data[j]<data[i])
					count++;
				Odata[i]=count;
				count=0;
				i++;
		}
}

bool Data::correctdata(int* input_data,int data,int position)
{
	int i,j,count=0;
	for(i=0;i<position;i++)
		for(j=i+1;j<position+1;j++)
		{if(input_data[i]==input_data[j])
		return false;}
	for(i=0;i<position;i++)
	{if(input_data[i]<input_data[position])
	count++;}
	if(count==data)
		return true;
	else
		return false;
}



void Data::decipher(int* data,int* Odata,int length)
{
	int i=0;
//	memset(Odata,-1,length);
	int k=0;
	for(k=0;k<length;k++)
		Odata[k]=-1;
	//if(i>=length)
	//	return;
step1:Odata[i]=0;		  
step2:Odata[i]=Odata[i]+1;
step3:if(Odata[i]<length)
	  {
		  if(correctdata(Odata,data[i],i))
		  {
			  i++;
			  if(i<length)
				  goto step2;
			  else
				  goto end;
		  }
		  else
			  goto step2;
	  }
	  else
	  {
		  Odata[i]=-1;
		  i--;
		  goto step2;
	  }

	  /*
step3:if(!correctdata(Odata,data[i],i))
	  {
		  //Odata[i]=Odata[i]+1;
	      if(Odata[i]>length)
		  {i--;goto step2;}
	  }
	  else
	  {
		  i++;
		  if(i>length)
			  goto end;
		  goto step2;
	  }*/
end:  int j=0;
	  for(j=0;j<length;j++)
		  cout<<Odata[j]<<' ';
	  return;
}

int main(int argc, char* argv[])
{
	int i;
	int length;
	int* data;
	int* Idata;
	int* Odata;
	cout<<"please input the length of data:"<<endl;
	cin>>length;
	data=new int[length]; //save the type-in data before enciphered
	Idata=new int[length]; //save the output data after deciphered
	Odata=new int[length]; //save the output data after enciphered
	cout<<"please input the data:"<<endl;
	for(i=0;i<length;i++)
		cin>>data[i];
	Data D(data,length);
	
	D.encipher(data,Odata,length);
	
	for(i=0;i<length;i++)
		cout<<Odata[i]<<' ';
	cout<<endl;
	
	//i=5;
	//cout<<Odata[i]<<endl;
	//int position=i;
	//if(D.correctdata(data,Odata[i],position))
	//	cout<<"true"<<endl;
	//else
	//	cout<<"false"<<endl;
	
	D.decipher(Odata,Idata,length);
	
	
	return 0;
}

⌨️ 快捷键说明

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