Memory 暴力法
Source
My Solution
sum[ i ][ j ]表示第i个数和第j个数的和。反正n<=52,这么整不要紧
#include
#include
#include
using namespace std;
int sum[56][56],ans[56],n;
inline bool judge(int x,int y) //这个内联了也基本没有效果,谁叫它太大了啊。
{
for(int i=1;i<x;i++){
sum[x][i]=y+ans[i];
for(int k=1;k<x;k++){ //k当然小于x,不然嘿嘿
for(int l=1;l<x;l++){ //这里本来是n,也对,写博客的时候临时改为x了,这样相对n快了一点吧,用不到地方少扫几次了
if(sum[x][i]==sum[k][l]) return false;
//cout<<sum[k][l]<<" ";
}
//printf("n");
}
}
return true;
}
int main()
{
scanf("%d",&n);
memset(sum,0,sizeof(sum));
if(n==2) printf("1 1");
else if(n==3) printf("1 2 3");
else{
ans[1]=1;ans[2]=2;ans[3]=3;
sum[1][2]=3;sum[1][3]=4;sum[2][3]=5;
printf("1 2 3");
for(int i=4;i<=n;i++){
for(int j=ans[i-1]+1;;j++){
if(judge(i,j)){
ans[i]=j;
printf(" %d",j);
break;
}
}
}
}
return 0;
}
非特殊说明,本站所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/uestc-1262-memory/
共有 0 条评论