01-18-2011, 20:01
|
|
Member
|
|
Join Date: Jan 2007
Location: Hódmezővásárhely
Posts: 1,448
Activity: 0%
Longevity: 94%
|
|
Itt egy megoldás permutációkra, anno első éves anyagból C nyelven:
PHP Code:
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include <math.h>
int hiba[8];
int pont[8];
int sorr[8];
char chs[11];
//int poss[];
//pt(chs,0);
int pt(char* s,int d, int usedc[],FILE *out)
{
int i;
char tmp;
for (i=0;i<strlen(chs);i++)
{
if (usedc[i]==1) continue;
usedc[i]=1;
tmp=s[d];
s[d]=chs[i];
pt(s,d+1,usedc,out);
tmp=s[d];
usedc[i]=0;
}
if (d<=strlen(chs)-1)
return 0;
fprintf(out,"%s\n",s);
return 1;
}
int main()
{
int i,i2,i3;
int dob;
int eldob=-1;
int tmp;
char news[50];
int usedc[50];
FILE* in=fopen("be.txt","rt");
FILE* out=fopen("ki.txt","wt");
fscanf(in,"%s",&chs);
fclose(in);
memset(usedc,0,sizeof(usedc));
for (i=1;i<strlen(chs);i++)
{
for (i2=strlen(chs)-1;i2>=i;i2--)
{
if (chs[i2-1]>chs[i2])
{
tmp=chs[i2];
chs[i2]=chs[i2-1];
chs[i2-1]=tmp;
}
}
}
strcpy(news,chs);
pt(news,0,usedc,out);
fclose(out);
return 0;
}
A spacifikáció:
Bemenet
A bemenetet a be.txt fajlbol olvassuk be. A bemenet egy szobol all, melyet sorvegejel kovet. A szoban
csak ekezet nelkuli kis- es nagybetuk szerepelhetnek, azaz szokoz, TAB, illetve mas karakterek nem. A
bemeneti szo betui paronkent kulonbozoek, tehat egy betu legfeljebb egyszer szerepelhet benne.
A bemeneti szo betuinek szama M (1 <= M < 10).
Kimenet
A kimenetet a ki.txt fajlba ırjuk ki. A kimenet M! db sorbol all: minden egyes sorban a bemenetkent
kapott szo betuinek egy permutacioja all, melyet rogton sorvegejel kovet. A szavak kiırasi sorrendje az
abece szerint tortenjen. A nagybetuk a kisbetuk elott vannak az abecesorban!
__________________
Mert ott van az erő, az egyszerű magyarban
Egyenes derékkal, áll minden viharban
BimmBimm (#233333)
Éplista számító
Last edited by BimmBimm; 01-18-2011 at 20:04..
|