主题:入门必做的题
GCC
[专家分:14380] 发布于 2006-04-14 11:53:00
1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。
───────
X Y Z D E
2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
3. 打印一个 N*N 的方阵,N为每边 N=15 打印出下面图形
字符的个数(3<N<20), 要求最 TTTTTTTTTTTTTTT
外一层为"T", 第二层为"J", 从第三层 TJJJJJJJJJJJJJT
起每层依次打印数字 1,2,3,... TJ11111111111JT
(右图以N为15为例) TJ12222222221JT
TJ12333333321JT
TJ12344444321JT
TJ12345554321JT
TJ12345654321JT
TJ12345554321JT
TJ12344444321JT
TJ12333333321JT
TJ12222222221JT
TJ11111111111JT
TJJJJJJJJJJJJJT
TTTTTTTTTTTTTTT
4. 在N行N列的数阵中, 数K(1〈=K〈=N)在每行和每列中出现且仅
出现一次,这样的数阵叫N阶拉丁方阵。例如下图就是一个五阶拉丁方阵。
编一程序,从键盘输入N值后,打印出所有不同的N阶拉丁方阵,并统计个数。
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
5. 输入一个十进数,将其转换成 N 进制数(0<N<=16)。
回复列表 (共635个回复)
261 楼
57124 [专家分:30] 发布于 2006-07-17 16:49:00
强哦~~!!
不过有点答案就好了~!!
有点答案可以拿来做参考~!
262 楼
lin07860 [专家分:480] 发布于 2006-07-20 10:23:00
进了大厅还以为入了门,,看了这贴才知道原来我进的是无门的大厅~
263 楼
klinmy [专家分:0] 发布于 2006-07-21 15:28:00
哇,cool 毙了,这样的算简单,到现在我才认识到我自己有多肤浅呀
真是长了见识了!!!
264 楼
yanli160 [专家分:0] 发布于 2006-07-22 17:06:00
顶
现在还是个新手,我一定好好的做下这些题目。太感谢楼主了。
265 楼
todsong [专家分:0] 发布于 2006-07-22 23:50:00
第4题
对某楼前面提出的n!(n-1)!...2!1!这个解,或者n!(n-1)!暂时不能赞同
用递归穷举所有可能的结果
计算结果是
3阶,12种
4阶,576种
5阶,1161280种
6阶,计算机已经吃不消算了
如果加打印所有结果,5阶要将近半分钟才有结果
如加一个验算过程,4阶的576种解没有重复,5阶计算机又吃不消了
不知是否算法有错误,望高手指点
程序如下(可读性太差!):
int num = 0;
//int w = 0 , b[500000][50];
int count(int n , int x , int y , int a[][10])
{
int i,j,z,p=0;
for(z=1,p=0;z<=n;z++,p=0)
{
for(i=0;i<x;i++)
if(a[i][y]==z)
{
p=1;
break;
}
for(j=0;j<y;j++)
if(a[x][j]==z)
{
p=1;
break;
}
if(p==1) continue;
else
{
a[x][y]=z;
if(x==n-1 && y==n-1)
{
//以下是验算
/* for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
b[num][i+j*n]=a[i][j];
}
for(i=0;i<num;i++)
{
for(j=0;j<n*n;j++)
{
if(b[i][j]!=b[num][j])
break;
}
if(j==n*n) w++;
}
*/
// 以下是打印
/* for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("----------------\n");
*/
num++;
return 1;
}
else
{
if(y+1<n)
count(n,x,y+1,a);
else
count(n,x+1,0,a);
}
}
}
}
void main()
{
int n,a[10][10],i,j;
printf("输入阶数:");
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
count(n,0,0,a);
printf("共有%d种解",num);
// printf("\n其中有%d项重复",w);
}
266 楼
海上飞洪 [专家分:520] 发布于 2006-07-24 11:52:00
很多都是经典的,这也算入门
太难了
267 楼
Lenovo227 [专家分:0] 发布于 2006-07-24 15:12:00
加入群:8451632
268 楼
AflyingA [专家分:10] 发布于 2006-07-24 16:05:00
开始时
[em10]
但是,我相信经过努力[em6],一定会[em2]
269 楼
iamwho1104 [专家分:20] 发布于 2006-07-27 09:42:00
顶一下
谢谢了
270 楼
jiazhengw [专家分:0] 发布于 2006-07-29 10:24:00
好题,正找些东东做做呢,狂顶!!!
我来回复