标题:C语言问题请教各位高手(特别邀请jzh2004进来看看)
只看楼主
LILY
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2004-6-10
得分:0 
我不会做啊!请你教一下我啦.写一下程序让我看看拉!谢谢!
2004-06-10 23:26
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 

我只说个0 1 2 3 四个数字的

int a,a1,a2,......a9,TATOL;

for(a=1;a<=3;a++)//第一位

for(a1=0;a1<=3;a1++)

if(a1!=a)

for(a2=0;a2<=3;a2++)

if(a2!=a1&&a2!=a)

for(a3=1;a3<=3;a3+=2)

if (a3!=a2&&a3!=a1&&a3!=a)

TATOL++;

printf("%d",TATOL);


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-06-10 23:44
zff_ff
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2004-5-12
得分:0 

#include <stdio.h> void permutation(char a[], int m, int n) { int i; char t; if (m<n-1) { permutation(a, m+1, n); for (i=m+1;i<n;i++) { t=a[m]; a[m]=a[i]; a[i]=t; permutation(a, m+1, n); t=a[m]; a[m]=a[i]; a[i]=t; } } else { printf("%s\n", a); } }

int main() { char a[]="ABCDE"; permutation(a, 0,5); return 0; }

这是网上看来的(在那里我忘了),它的算法和大众不大一样,值得看看

楼上的算法是自己写的吧

这种牺牲时间来换取空间的做法,我不是很赞成。(个人意见,请指教)

[此贴子已经被作者于2004-06-11 00:28:19编辑过]


偶是一只想要飞却忘了咋飞的菜鸟
2004-06-11 00:20
chaos
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2004-6-10
得分:0 

knocker兄写的很容易明白

不过就是有些繁琐,不知道有没有什么别的方法


2004-06-11 02:18
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

// c++ code

#include <iostream> #include <string> #include <cstdlib> #include <algorithm>

using namespace std;

int main() { string num = "01234567"; string first, last; int firstNum, lastNum; sort(num.begin(), num.end()); int cnt = 0; do { first = num.at(0); last = num.at(7);

firstNum = atoi(first.c_str()); lastNum = atoi(last.c_str());

if(firstNum != 0 && lastNum%2 != 0) cnt++; }while (next_permutation(num.begin(), num.end())); cout<<cnt<<endl;

system("pause"); return 0; }


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-06-11 05:33
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

#include <iostream> #include <string> #include <algorithm> #include <cstdlib>

using namespace std;

int main() { string code = "123456789"; string temp; int num[9]; int cnt = 0;

sort(code.begin(), code.end()); do { for(int i = 0; i<9; i++) { temp = code.at(i); num[i] = atoi(temp.c_str()); } int sum1 = num[0] + num[1] + num[2]; int sum2 = num[3] + num[4] + num[5]; if(sum1 == sum2) { int sum3 = num[6] + num[7] + num[8]; if(sum2 == sum3) { int sum4 = num[0] + num[3] + num[6]; if(sum3 == sum4) { int sum5 = num[1] + num[4] + num[7]; if(sum4 == sum5) { int sum6 = num[2] + num[5] + num[8]; if(sum5 == sum6) { int sum7 = num[2] + num[4] + num[6]; if(sum6 == sum7) { int sum8 = num[0] + num[4] + num[8]; if(sum7 == sum8) { cout<<num[0]<<num[1]<<num[2]<<endl; cout<<num[3]<<num[4]<<num[5]<<endl; cout<<num[6]<<num[7]<<num[8]<<endl; cout<<endl; cnt++; } } } } } } } }while (next_permutation(code.begin(), code.end())); cout<<cnt;

system("pause"); return 0; }


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-06-11 06:54
gzpjj
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-6-8
得分:0 

但是这样写跟直接写出答案没有什么区别哦~!计算就只是做了简单的乘法计算没有做到题目要求的那样哦~!


2004-06-11 16:41
LILY
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2004-6-10
得分:0 
knocker能否解释一下你写的程序啊?谢谢!
2004-06-11 17:22
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
得分:0 

这是knocker的程序:

#include <stdio.h> void main() { int a,b,c,d,n=0; for(a=1;a<4;a++)//第一位数从1开始循环, for(b=0;b<4;b++)//第二数从0开始循环, for(c=0;c<4;c++)//第三位数从0开始循环, for(d=1;d<4;d++)//第四位数从0开始循环, if(b!=a&&c!=b&&c!=a&&d!=c&&d!=b&&d!=a)//让他们互不相等; { n++;//统计个数; printf("%d%d%d%d ",a,b,c,d);//将它们打印出来; } printf("\nn=%d",n); printf("\n"); }

[此贴子已经被作者于2004-06-11 21:34:27编辑过]


学好编程就能编出自己的未来! 加油!自信!努力!奋斗!
2004-06-11 21:33
LILY
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2004-6-10
得分:0 

那么能否完完整整把程序写出来啊!谢谢!希望配上注解啦!因为我初学编程,很多东西都不会,请教各位大哥啦!谢谢!

2004-06-12 21:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-2292-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.115249 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved