2009-05-06 22:13:32來源不明
加法減法的奧妙
作法:(1)多個for(暴力)(2)善用void
注意事項:我的寫法剛開始沒想到是n個數 只會有n-1個空格 所以才會n--; 所以上面的n為空格的個數唷
優先輸出順序為:' ' '+' '-'
/*************************************************************/
#include<stdio.h>#include<stdlib.h>
int n,way[16]={0};
void make(int now)
{
int a;
if(now==n)
{
int sum=0;
int temp[16]={0},top=1;
temp[0]=1;
for(a=0;a<n;a++)
{
if(way[a]==0) {
if(a+2>=10) {
if(temp[top-1]>0)
temp[top-1]=temp[top-1]*100+a+2;
else
temp[top-1]=temp[top-1]*100-a-2;
}
else {
if(temp[top-1]>0)
temp[top-1]=temp[top-1]*10+a+2;
else
temp[top-1]=temp[top-1]*10-a-2;
}
}
if(way[a]==1) {temp[top]=(a+2);top++;}
if(way[a]==2) {temp[top]=(a+2)*-1;top++;}
}
for(a=0;a<top;a++)
sum=sum+temp[a];
if(sum==0)
{
printf("1");
for(a=0;a<n;a++)
{
if(way[a]==0) printf(" ");
if(way[a]==1) printf("+");
if(way[a]==2) printf("-");
printf("%d",a+2);
}
printf("\n");
}
}
else
for(a=0;a<3;a++)
if(now+1<=n)
{way[now]=a;make(now+1);}
}
main()
{
while(scanf("%d",&n)==1)
{
n--;
make(0);
}
return 0;
}
上一篇:Problem 47 HARD
下一篇:古代神祕文字