?? codingmethod.cpp
字號:
#include<stdio.h>
#include<math.h>
#define N 4
void main()
{
int i,j,k,M=1,t,v;
for(i=1;i<=N;i++)
{
M=M*i; /*階乘的生成*/
}
int a[N],b[N-1]; /*a[]為最后要填充數字的位數,b[]為n[i]數*/
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
a[j]=0; /*對a[]所有位均賦值為零*/
}
t=i;
for(j=0;j<N-1;j++)
{
b[j]=t%(j+2); /*求b[]即書中a[]的值*/
t=(t-b[j])/(j+2);
}
v=b[N-2]; /*對b[n-1]賦值到v,并且把a[]中v位置填上n*/
a[v]=N;
for(k=N-1;k>0;k--)
{
if(k==1)
{
for(j=0;j<N;j++)
{
if(a[j]==0)
{
a[j]=1; /*當最后一個位置是0時把1填充進去*/
break;
}
}
}
if(k!=1)
{
v=0; /*v為從左起對空格數的統計*/
for(j=0;j<N;j++)
{
if(v==b[k-2] && (a[j]==0)) /*v的數目剛好和得到的b[]的數相同,并且在a[]中對應位置為0
否則循環到下一個非零位置把k的值負進去*/
{
a[j]=k;
break;
}
if(a[j]==0)v=v+1; /*累計計算位置中空格的數目*/
}
}
}
for(j=0;j<N;j++)
{
printf("%d",a[j]);
if(j==N-1)printf("\n");
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -