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

📄 lkq.cpp

📁 1RIP路由协议 ——RIP协议最初是为Xerox网络系统的Xeroxparc通用协议而设计的
💻 CPP
字号:
// 求划分
// 
#include "iostream.h"
#include "iomanip.h"

#define max 1024

int a[max][max];
int tp;

void print( int *map , int len )
{
 static int total = 1;
// cout<<"划分"<<setw(4)<<total++<<" : ";
 a[tp][0]=len;
 for( int i = 0 ; i < len ; i++ )
 {
	 a[tp][i+1]=map[i];
 // cout<<setw(5)<<map[i];
 }
 tp++;
// cout<<endl;
}

int solve2(int k)
{
	int i,count=0;
	for(i=0;i<tp;i++)
	{
		if(a[i][0]==k)
			count++;
	}
	return count;
}

int solve3(int k)
{
	int i,count=0;
	for(i=0;i<tp;i++)
	{
		if(a[i][1]<=k)
			count++;
	}
	return count;
}

int solve4()
{
	int i,j,count=0;
	for(i=0;i<tp;i++)
	{
		for(j=1;j<=a[i][0];j++)
		{
			if(a[i][j]%2==0)
				break;
		}
		if(j>a[i][0])
			count++;
	}
	return count;
}

int check(int i)
{
	int j;
	if(a[i][0]==1)
		return 1;
	for(j=1;j<a[i][0];j++)
	{
		if(a[i][j]==a[i][j+1])
			return 0;
	}
	return 1;
}

int solve5()
{
	int i,count=0;
	for(i=0;i<tp;i++)
	{
		if(check(i))
			count++;
	}
	return count;
}

int p( int n , int m , int *map , int len )
{
 if( n >= 1 && m == 1 )
 {
 // flag1:
 // 当 m=1 时,只有一种分法,n = 1 + 1 + ... 
 // 与 flag2 合作,可以完成这种分解的输出
  map[len] = 1;
  p( n - 1 , m , map , len+1 );
  return 1;
 }
 else if( n == 0 && m == 1 )
 {
 // flag2:
 // 配合 flag1 ,完成对 m=1 划分的处理
  print( map , len );
  return 1;
 }
 else if( n == 1 && m > 1 )
 {
 // flag3:
 // 当 n=1 时,分解已经完成,进行输出处理
  map[len] = n;
  print( map , len + 1 );
  return 1;
 }
 else if( n < m )
 {
 // flag4:
 // 由于所处位置的关系,此时及以下情况中的 m , n 都 > 1
  return p( n , n , map , len );
 }
 else if( n == m )
 {
 // flag5:
 // 这种情况下,map 位赋为 m,则可完成一种划分
  map[len] = m;
  print( map , len + 1 );
 // 继续下种情况的处理
  return p( n , m - 1 , map , len ) + 1;
 }
 else
 {
 // 有两种处理方法
 // 方法一:
 // 当前 map 位赋为 m , 处理 p( n-m , m )
  map[len] = m;
  int s1 = p( n - m , m , map , len + 1 );
 // 方法二:
  int s2 = p( n , m - 1 , map , len );
  return s1 + s2;
 }

}
void main()
{
 int map[max] = { 0 };
 int len = 0;
 int n,k;
 while(cin>>n>>k)
 {
	tp=0;
// cout<<"total="<<p( n , n , map , len )<<endl;
 cout<<p( n , n , map , len )<<endl;
 cout<<solve2(k)<<endl;
 cout<<solve3(k)<<endl;
 cout<<solve4()<<endl;
 cout<<solve5()<<endl;
 cout<<endl;
 }
}
// 程序2是程序1的扩充,基本思想与程序1相似,在理解程序1的基础上,
// 可以很好得理解程序2

⌨️ 快捷键说明

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