?? 十五人排序.c
字號(hào):
/*原題: 一寢室有15個(gè)人,每天都要三人一行外出散步一次,要在一周
(7天)內(nèi) 每個(gè)人都跟其他14人各散步一次,問(wèn)每一天應(yīng)該怎么安排??
要快點(diǎn)想喲!!!! 都等一會(huì)15分鐘*/
#include <stdio.h>
int anpai[7][5][3];
int biaozhi[16][16];
int i=0,j=0,k=0,a,total=0;
void huisu()
{
if(k==1)
{ anpai[ i ][j][0]=0; j--;
if(j==-1) { i--; j=4; }
biaozhi[anpai[ i ][j][2]][anpai[ i ][j][1]]=0;
biaozhi[anpai[ i ][j][2]][anpai[ i ][j][0]]=0;
k=2; a=anpai[ i ][j][k]; anpai[ i ][j][k]=0; total-=2;
}
else if(k==2) { biaozhi[anpai[ i ][j][1]][anpai[ i ][j][0]]=0;
a=anpai[ i ][j][--k]; anpai[ i ][j][k]=0; total--;
}
}
void main()
{
int b,c,t;
for(a=1; a<=15&&total<105; a++)
{ t=0;
for(b=0; b<=j; b++)
for(c=0; c<3; c++)
if(anpai[ i ][ b ][c]==a) { b=9; break; }
if(b==10)
{
while(a==15) huisu();
continue;
}
for(b=0; b<k; b++)
if(biaozhi[a][anpai[ i ][j][ b ]]==1)
{
while(a==15) { huisu(); t=1; }
break;
}
if(b<k||t==1) continue;
if(a==15&&k<2) { while(a==15) huisu(); continue; }
switch(k)
{
case 0: anpai[ i ][j][k++]=a; total++; break;
case 1: anpai[ i ][j][k++]=a; total++;
biaozhi[a][anpai[ i ][j][0]]=1; break;
case 2: anpai[ i ][j][k]=a; total++;
biaozhi[a][anpai[ i ][j][0]]=1;
biaozhi[a][anpai[ i ][j][1]]=1;
j++;
if(total%15==0) { i++; j=0; }
k=0; a=0; break;
}
}
for(a=1;a<8; a++)
printf("第%d天 ",a);
for(j=0; j<5; j++)
{ printf("\n");
for(i=0; i<7; i++)
{
if(i>0&&i<7) printf(" ");
for(k=0; k<3; k++)
printf("%-2d ", anpai[ i ][j][k]);
}
} printf("\n");
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -