| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2104 人关注过本帖
标题:请老手帮我看一下这题哦,红色的地方不理解。
只看楼主 加入收藏
love04520
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2017-6-25
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:13 
请老手帮我看一下这题哦,红色的地方不理解。
#include <stdio.h>
int a[1024];
int main(){
    int i , j , n;
    scanf("%d",&n);
    for(i = 0;i < 1<<n;++i)
        a[i] = i;
    for(i = 0;i < n;++i)
        for(j = 0;j < 1<<n;++j)
            if(j>>i&1)
                a[j] += a[j^(1<<i)];
    int sum = 0;
    for(i = 0;i < 1<<n;++i)
        sum += a[i];
    printf("%d\n",sum);
    return 0;
}


搜索更多相关主题的帖子: include 
2017-06-27 00:59
love04520
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2017-6-25
收藏
得分:0 
红色的地方不理解什么意思,谁高手说明一下这些是什么意思!谢了。
2017-06-27 01:00
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:2 
这是位操作。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-27 07:34
love04520
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2017-6-25
收藏
得分:0 
如果输入n为3,那么for(j = 0;j < 1<<n;++j)是不是等价于for(j = 0;j <8;++j)啊,求解
2017-06-27 09:19
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
收藏
得分:2 
这就是简单的位操作,感觉你是不是在修代码,好好的数值不用,非的弄个位运算,增加脑力
2017-06-27 10:10
love04520
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2017-6-25
收藏
得分:0 
唉,竞赛题目,我也想他们好好写啊,可是他们就写成这样,莫办法!
2017-06-27 10:26
zhajun123
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2012-8-27
收藏
得分:10 
for(j = 0;j < 1<<n;++j) //j初始值为0,如果j小于1左移n位后的值,那么执行下面的函数,执行完之后,j先自增1.
if(j>>i&1)//如果 j右移i位,然后和1进行与运算 的值为 真,那么执行下面的函数。
a[j] +=a[j^(1<<i)];//将a[j]的值加上 下标为:1左移i位,然后与j进行与或运算后的值 的数组a,然后将结果赋值给a[j];
2017-06-27 10:54
love04520
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2017-6-25
收藏
得分:0 
a[0]=0,a[1]=1……a[7]=7
for(i = 0;i < n;++i)
        for(j = 0;j < 1<<n;++j)
            if(j>>i&1)
                a[j] += a[j^(1<<i)];

那么接下来的循环:i=0 j=0时,不满足if条件,所以a[0]=0
                      j=1时,不是会满足if条件吗,应当a[1]=a[1]+a[1]=2的呀,为什么这时还是 a[1]=1

不懂,谁帮帮我呀,
2017-06-27 13:23
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 8楼 love04520
测试过输入n=11时会崩溃~
那段代码规律好像不好找耶~用于加密文件感觉差不多~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-27 13:41
love04520
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2017-6-25
收藏
得分:0 
回复 9楼 九转星河
只需要输入n为3就好了,就是i=0,j=1时 ,为什么a[1]=1,  i=0,j=2时,a[2]=2, i=0,j=3时,为什么a[3]=5,,搞不懂。能说说吗?

2017-06-27 13:46
快速回复:请老手帮我看一下这题哦,红色的地方不理解。
数据加载中...
 
   



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

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