请问大神这道论文存在的问题怎么写写

欢迎加入我们,一同切磋技术 &
用户名: &&&
密 码: &
共有 2266 人关注过本帖
标题:求大神指点,这道题怎么做啊
等 级:新手上路
帖 子:10
结帖率:33.33%
&&已结贴√
&&问题点数:20&&回复次数:9&&&
求大神指点,这道题怎么做啊
九数组分数
1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?
下面的程序实现了该功能,请填写划线部分缺失的代码。
#include &stdio.h&
void test(int x[])
&&& int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
&&& int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
&&& if(a*3==b) printf(&%d / %d\n&, a, b);
void f(int x[], int k)
&&& int i,t;
&&& if(k&=9){
&&&&&&&&test(x);
&&& for(i=k; i&9; i++){
&&&&&&&&{t=x[k]; x[k]=x[i]; x[i]=t;}&&
&&&&&&&&f(x,k+1);
&&&&&&&&_____________________________________________ // 填空处
int main()
&&& int x[] = {1,2,3,4,5,6,7,8,9};
&&& f(x,0);&&&
&&& return 0;
注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。
搜索更多相关主题的帖子:
等 级:黑侠
帖 子:107
专家分:534
这是一个典型的全排列组合算法,递归后将交换的数据还原即可,复制递归前的那行代码即可,如果非要不一样,可把k、i对调,结果一样。
收到的鲜花
附言:我很赞同
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
若是用排列组合的方法,如题目中的方法,确实是难理解。我想出来一个好理解但是比较死的办法。设N为分子,M为分母,且M=N*3,由于有9个数字,所以N只能是四位数,M是五位数。试想N的三倍是五位数,且N的四个数字不能重复,所以N最小是3412,同理N最大是9876。在这个范围内穷举每一个数,只要M*10000+N,即9个数字组成的数没有相同的数字而且没有数字0即可。下面是我的算法。
程序代码:#include &stdio.h&
#include &stdlib.h&
#include &stdbool.h&
int main()
&&& bool isSameNumberExistsInTwoNumbers(int m,int n);
&&& int N,M;
&&& for(N=<font color=#2;N&=<font color=#6;N++)
&&&&&&&&M=N*<font color=#;
&&&&&&&&if(isSameNumberExistsInTwoNumbers(M,N))
&&&&&&&&&&&&printf(&%d/%d=1/3\n&,N,M);
&&& return <font color=#;
bool isSameNumberExistsInTwoNumbers(int m,int n)
&&& int i,j,total=m*<font color=#00+n;
&&& char numChar[<font color=#];&&//注意长度10是因为末尾要加一个字符串结束标志'\0'
&&& itoa(total,numChar,<font color=#);&&//将这个9位数转换成字符串
&&& for(i=<font color=#;i&<font color=#;i++)
&&&&&&&&for(j=i+<font color=#;j&<font color=#;j++)
&&&&&&&&&&&&//比较是否有相同的数字或者有0
&&&&&&&&&&&&if(numChar[i]==numChar[j]||numChar[i]=='<font color=#')&&return false;
&&& if(numChar[<font color=#]=='<font color=#')&&return false;&&//检查第9个,上面没有检查到
&&& return true;
下面是程序的运行结果,大家看下对不对。
附件: 您没有浏览附件的权限,请
&&&唯实惟新 至诚致志
等 级:黑侠
帖 子:107
专家分:534
可行,不过楼主题意是帮他填空。另判断是否重复还有更高效的算法,不需要转换为字符串,如下:
bool isSameNumberExistsInTwoNumbers(int m,int n)
&&& int i,total=m*10000+n;
&&& char numChar[10]={0};&&//注意长度10是因为末尾要加一个字符串结束标志'\0'
&&& for(;total/=10)
&&&&&&&&&numChar[total%10]++;
&&& for(i=9;i;i--)
&&&&&&&&&if(numChar[i]!=1)
等 级:版主
威 望:236
帖 子:5496
专家分:30812
回复 4楼 拉链
bool isSameNumberExistsInTwoNumbers(int m,int n)
&&& unsigned mark = 0;
&&& for( n=n*100000+m; n!=0; n/=10 )
&&&&&&&&mark |= 1u&&(n%10);
&&& return mark==0x3FE;
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
回复 5楼 rjsp
蒙了,请问位移运算怎么做到的。
&&&唯实惟新 至诚致志
等 级:版主
威 望:236
帖 子:5496
专家分:30812
回复 6楼 qq
遇到1就将第一bit设为1
遇到2就将第二bit设为1
遇到3就将第三bit设为1
遇到9就将第九bit设为1
最后看一下是不是二进制的
等 级:黑侠
帖 子:107
专家分:534
回复 5楼 rjsp
回复5楼:就是把数组变成位。得到一个数的各位数据后,把1左移到该位并与mark或,如果9个数不同,则最终的数应该是二进制11 fe。
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
回复 8楼 拉链
咯,在纸上比划了半天,才明白怎么回事,不得不说,此方法确实精妙无比。
&&&唯实惟新 至诚致志
版权所有,并保留所有权利。
Powered by , Processed in 0.089749 second(s), 9 queries.
Copyright&, BCCN.NET, All Rights Reserved求助大神,这道题怎么写_百度知道
求助大神,这道题怎么写
我有更好的答案
如图所示,仅供参考
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。大神们这道题怎么做,求解_百度知道
大神们这道题怎么做,求解
我有更好的答案
全部转化为10进制:335D=335175H=1*16*16+7*16+5=373375O=3*8*8+7*8+5=253B=1A9H=16*16+10*16+9=425
采纳率:72%
首先知道各个字母所代表的意思:O - Octet, 八进制B - Binary, 二进制H - Hex, 十六进制D - Decimal, 十进制因此都转换成十进制A=335B=5+7*16+1*16&#178;=373C=5+7*8+3*8&#178;=253D=1+0*2^1+0*2^2+1*2^3+0*2^4+0*2^5+1*2^6+1*2^7+1*2^8=457所以从小到大排列为,C,A,B,D
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。各位大神请问这道题怎么写&#128522;_百度知道
各位大神请问这道题怎么写&#128522;
我有更好的答案
这两道都不会&#128522;
那重拍一下
。。。好吧
网速好慢哒嘻嘻&#128516;
快点好吗?作业很多~初三党伤不起啊
。。。。学校不一样老师很歹毒的说
学霸好棒&#92;^O^&#47;做个朋友吧
那些事中的那些人
来自:作业帮
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 题记怎么写 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信