|
Posted on 2009-10-03 01:36 Uriel 阅读(617) 评论(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; }
|