1 条题解
-
0
C :
#include <stdio.h> #define N 29 #define M 4 void perms(int p[],int start) { int i,t; if(start==M) { if((p[0]<p[1])&&(p[0]<p[2])&&(p[2]<p[3])&&(p[0]*p[0]*p[0]+p[1]*p[1]*p[1]==p[2]*p[2]*p[2]+p[3]*p[3]*p[3])) printf("%d,%d,%d,%d\n",p[0],p[2],p[3],p[1]); return; } for(i=start;i<N;i++)// 注意i从start开始,不从0开始哦 { t=p[i];p[i]=p[start];p[start]=t;//交换 perms(p,start+1);//递归 t=p[i];p[i]=p[start];p[start]=t;//交换回来 } } int main() { int i,p[N]; for(i=0;i<N;i++) p[i]=i+1;//数组赋初值 perms(p,0);//从数组中索引号为0的元素开始进行排列 return 0; }
C++ :
#include<iostream> #include<cmath> using namespace std; #define N 4 void F(int a[],int start) { int i,j,t; if(start==N) { int x=pow(a[0],3); int y=pow(a[1],3); int z=pow(a[2],3); int w=pow(a[3],3); if(a[2]>a[1]&&a[3]>a[2]&&a[1]>a[0]&&((x+y)==(w+z)||(x+z)==(w+y)||(x+w)==(z+y)) ){cout<<a[0]<<','<<a[1]<<','<<a[2]<<','<<a[3]<<endl;} return; } for(i=start;i<30;i++) { swap(a[start],a[i]); F(a,start+1); swap(a[start],a[i]); } } int main() { int p[30]; int i; for(i=0;i<29;i++) p[i]=i+1; F(p,0); return 0; }
- 1
信息
- ID
- 861
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者