poj 1543 Perfect Cubes【sort排序结构体】

简介:

1543完全可以用暴力解决。。。我这里是暴力结束后用 sort 排序结构体,sort真是很给力的一个函数,在cmp中间先判断 P.a 的大小,在判断 P.b 的大小,开始WA了两次,是没考虑清楚 P.b 不可能相同而额外考虑了很多,反而错了

而且我知道了,用结构体是一个很好的解决卫星数据的方法,反正所有数据都是绑定的,所以没有必要担心卫星数据遗漏。

另外,结构体还可以写成如下形式:

typedef struct P
{
	int a,b,c,d;
}point;

point p[101];


AC的代码:

#include <iostream>
#include <algorithm>

struct P
{
	int a,b,c,d;
}p[101];

bool cmp(P A,P B)
{
	if(A.a==B.a)
		return A.b<B.b;
	return A.a<B.a;
}

int Is_Cube(int n)
{
	int i;
	for(i=1; ;i++)
	{
		if(i*i*i==n)
			return i;
		
		if(i*i*i>n)
			return 0;
	}
}

int main()
{
    int n;
	int a,b,c,d;
	int count=0;

	scanf("%d",&n);
	
	//处理循环体
	for(b=2;b<n;b++)
		for(c=b+1;c<n;c++)
			for(d=c+1;d<n;d++)
			{
				if(b*b*b+c*c*c+d*d*d>n*n*n)
					break;
				
				a=Is_Cube(b*b*b+c*c*c+d*d*d);
				if(a!=0 && a<=n)		// a 的平方根为整数
					p[count].a=a,p[count].b=b,p[count].c=c,p[count].d=d,count++;
			}
			
			std::sort(p,p+count,cmp);
			for(a=0;a<count;a++)
				printf("Cube = %d, Triple = (%d,%d,%d)\n",p[a].a,p[a].b,p[a].c,p[a].d);
			
			return 0;
}


先写了未排序的暴力:

#include <iostream>

int Is_Cube(int n)
{
	int i;
	for(i=1; ;i++)
	{
		if(i*i*i==n)
			return i;

		if(i*i*i>n)
			return 0;
	}
}

int main()
{
    int n;
	int a,b,c,d;
	while(scanf("%d",&n)!=EOF)
	{
		//处理循环体
		for(b=2;b<n;b++)
			for(c=b+1;c<n;c++)
				for(d=c+1;d<n;d++)
				{
					if(b*b*b+c*c*c+d*d*d>n*n*n)
						break;

					a=Is_Cube(b*b*b+c*c*c+d*d*d);
					if(a!=0 && a<=n)		// a 的平方根为整数
						printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);
				}



	}

    return 0;
}

相关文章
|
6月前
全排列----关于next_permutation()/prev_permutation() 函数的用法
全排列----关于next_permutation()/prev_permutation() 函数的用法
53 0
|
6月前
|
搜索推荐 C++
[C++/PTA] 有序数组(类模板)
[C++/PTA] 有序数组(类模板)
54 0
|
C语言
妙用指针实现qsort
妙用指针实现qsort
75 0
|
网络架构
POJ 3250 Bad Hair Day、POJ 2796 Feel Good(单调栈)
POJ 3250 Bad Hair Day、POJ 2796 Feel Good(单调栈)
POJ 3494 Largest Submatrix of All 1’s(单调栈)
POJ 3494 Largest Submatrix of All 1’s(单调栈)
A. Codeforces Checking(打表枚举)
A. Codeforces Checking(打表枚举)
52 0
|
人工智能
Codeforces 220B-Little Elephant and Array-扫描线 & 树状数组
题意: 给出一个长度为n的数组,有m个询问,每次询问给出一个区间,问这个区间内有多少个数x恰好出现x次
126 0
Codeforces 220B-Little Elephant and Array-扫描线 & 树状数组
HDU-1598,find the most comfortable road(并查集+枚举)
HDU-1598,find the most comfortable road(并查集+枚举)
|
搜索推荐 算法 Java
HDOJ(HDU) 1862 EXCEL排序(类对象的快排)
HDOJ(HDU) 1862 EXCEL排序(类对象的快排)
94 0