69,369
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#define SIZE 4//一次写入文件的大小
typedef struct{
char word[7];
}Word;
Word *pw;
FILE *fp;
unsigned long total=0;
void Chose(int n,int m)
{
int *num,i,j,m1=0;
num=(int *)calloc(n,sizeof(int));
while(num[0]<m)
{
for(i=0;i<n;i++)
pw[total].word[i]=num[i]+'a';
//printf("%s\n",pw[total].word);
if(total==SIZE)
{
fwrite(pw,sizeof(Word),SIZE,fp);
total=0;
}
for(j=n-1;j>=1;j--)
{
m1=(j<n-1)?(m1+1):(m-2);
if(m1>=m)
m1=m-1;
if(num[j]>m1)
{
num[j-1]++;
num[j]=0;
}
else if(j==n-1)
num[j]++;
}
total++;
}
free(num);
}
int main(void)
{
int i;
pw=(Word *)calloc(SIZE,sizeof(Word));
fp=fopen("d:\\穷举结果.txt","w"); //结果保存在d:\\穷举结果.txt里
for(i=2;i<=6;i++)
Chose(i,26);
if(total<=SIZE)
fwrite(pw,sizeof(Word),SIZE,fp);
free(pw);
fclose(fp);
getchar();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define VI(q) data[q]='\n',data[q+1]='\0',visit(data,fp)
#define IR(i) for(data[i]='a';data[i]<='z';++data[i])
#define IFR(i) for(data[i]='a';data[i]<='z' || data[i]=='z'+1 && (VI(i)) ;++data[i])
int visit(const char* data,FILE *fp){fputs(data,fp);return 0;};
int main(void)
{
FILE *fp=fopen("c:\\ret.txt","w");
char *data=calloc(8,1);
/*5位字符做示范*/
IR(0) IR(1) IFR(2) IFR(3) IFR(4) VI(5);
/*下面是6位的版本*/
/*IR(0) IR(1) IFR(2) IFR(3) IFR(4) IFR(5) VI(6);*/
free(data);
fclose(fp);
return 0;
}
Process returned 0 (0x0) execution time : 1.453 s
Press any key to continue.
#include <stdio.h>
#include <stdlib.h>
#define IFR(i) for(data[i]='a';data[i]<='z' || data[i]=='z'+1 && (data[i]='\0',visit(data)) ;++data[i])
int visit(const char* data){return 0;};
int main(void)
{
char *data=calloc(7,1);
char i0,i1,i2,i3,i4,i5;
data[6]= '\n';
for(data[0]='a';data[0]<='z';++data[0])
for(data[1]='a';data[1]<='z';++data[1])
IFR(2)
IFR(3)
IFR(4)
IFR(5)
visit(data);
free(data);
return 0;
}
void swap(char *str1,char *str2)
{
char temp;
temp=*str1;
*str1=*str2;
*str2=temp;
}
void permStr(char *str,int i)
{
//printf("%d",i);
if(i==strlen(str)-1)
printf("%s\n",str);
else
{
for(int j=i;j<strlen(str);j++)
{
//printf("i %d,j %d",i,j);
swap(&str[i],&str[j]);
permStr(str,i+1);
swap(&str[i],&str[j]);
}
}
}
void main()
{
char str[]={"abcde"};
permStr(str,0);
}
#include <stdio.h>
#define N 26
char *lword="abcdefghijklmnopqrstuvwxyz",word[N];
int k=0,M;
unsigned long long total=0;
void Chose(int a1,int a2)
{
int i;
if(0==a2){
for(i=0;i <M;i++)
printf("%c",word[i]);
printf("\n");
total++;
return;}
for(i=a1;i <N;i++)
{
word[k++]=lword[i];
Chose(a1+1,a2-1);
k--;
}
}
int main(void)
{
M=2;
for(M=2;M <=6;M++)
Chose(0,M);
printf("total=%llu\n",total); //穷举数
getchar();
return 0;
}
#include <stdio.h>
#include <string.h>
#define N 26
char *lword="abcdefghijklmnopqrstuvwxyz",word[N];
int k=0,M;
unsigned long long total=0;
void Chose(int a1,int a2)
{
int i;
if(0==a2){
for(i=0;i<M;i++)
printf("%c",word[i]);
printf("\n");
total++;
return;}
for(i=a1;i<N;i++)
{
word[k++]=lword[i];
Chose(a1+1,a2-1);
k--;
}
}
int main(void)
{
M=2;
for(M=2;M<=6;M++)
Chose(0,M);
printf("total=%llu\n",total); //穷举数
getchar();
return 0;
}