|
Posted on 2009-10-03 01:36 Uriel 阅读(624) 评论(0) 编辑 收藏 引用 所属分类: POJ 、 递归 & 分治
暑假集训就看过这题,当时不会。。今天看了下Discuss之后很有感觉。。 加入下标应该不用这么麻烦。。sscanf那些神奇的东西都还不会。。就用猥琐方法硬来了。。。- -|| 大牛们不吝指教。。加下标那里怎么改下。。
 /**//*Problem: 1747 User: Uriel
Memory: 1184K Time: 141MS
Language: C++ Result: Accepted*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char str[105][10000];
 char temp[102][4]= {"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30",
"31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60",
"61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89",
"90","91","92","93","94","95","96","97","98","99","100"};
int n,st;

int min(int a,int b)
  {
return a < b ? a: b;
}

void Sov(int a)
  {
if(a==1)return ;
Sov(a-1);
strcpy(str[a],"((A");
strcat(str[a],temp[a-1]);
strcat(str[a],"|B");
strcat(str[a],temp[a-1]);
strcat(str[a],")|(");
strcat(str[a],str[a-1]);
strcat(str[a],"|((A");
strcat(str[a],temp[a-1]);
strcat(str[a],"|A");
strcat(str[a],temp[a-1]);
strcat(str[a],")|(B");
strcat(str[a],temp[a-1]);
strcat(str[a],"|B");
strcat(str[a],temp[a-1]);
strcat(str[a],"))))");
}

int main()
  {
scanf("%d",&n);
memset(str,0x00,sizeof(str));
strcpy(str[1],"((A0|B0)|(A0|B0))");
st=1;
Sov(n);
for(int i=0;i<min(strlen(str[n]),50*n);i++)
 {
printf("%c",str[n][i]);
}
printf("\n");
return 0;
}


|