Cod sursa(job #25676)

Utilizator xulescuStefu Gabriel xulescu Data 4 martie 2007 14:08:36
Problema Expresii 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream.h>
char alfabet[27]="abcdefghijklmnopqrstuvwxyz";
int cont=0,n,k,p,r;
int st[20],sem;
ofstream g("expresii2.out");
char ty[20];

int valid(int p){
	int d;
	if(p==1){ if(st[p]==k||st[p]==k+1||st[p]==k+2) return 0;
	else return 1; }
	/*else{
		for(int i=1;i<=p;i++) if(st[i]==k||st[i]==k+1||st[i]==k+2) d++;
		if(d>p/2) return 0;
	}  */
}

int final(int p){
	int i;
	if(p==n){
		int d=0;
		for(i=1;i<=n;i++) if(st[i]==k||st[i]==k+1||st[i]==k+2) d++;
		int y=n-d;
		if(y==d||y==d+1){ sem=0; return 1; }
    	sem=1; return 1;
	}
	return 0;
}

void back(){
	p=1;
	st[p]=-1;
	while(p>0){
		if(st[p]<k+3){
			st[p]++;
			if(valid(p)){ if(final(p)){ if(!sem){
									if(r==cont+1) for(int i=1;i<=n;i++) ty[i-1]==alfabet[st[i]];

									cont++; } }
						 else{ p++; st[p]=-1; }
        	}
		}
		else p--;
	}
}

int main(){
	ifstream f("expresii2.in");
	f>>n>>k>>r;
	f.close();
	alfabet[k]='+'; alfabet[k+1]='*'; alfabet[k+2]='!'; alfabet[k+3]=NULL;
	back();
	//ofstream g("expresii2.out");
	g<<cont<<'\n'<<ty;
	return 0;
}