| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1030 人关注过本帖
标题:请帮忙看一看
只看楼主 加入收藏
风的飞扬0102
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-22
收藏
得分:0 
回复 8 楼 yejiangnan
一部分吧!
2014-04-23 19:49
亚哥
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-3-22
收藏
得分:0 
整解要拜师收徒吗/
2014-04-23 21:23
风的飞扬0102
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-22
收藏
得分:0 
回复 12 楼 亚哥
求解
2014-04-24 08:08
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

int idx=0;
/*
* 加1后进位操作 
* 用字符串模拟数字的进位操作
*/
void add_one(int *array, int array_len, int radio, int *flow)
{
        int i;
        for ( i=array_len-1; i>=0; i-- )
        {
                array[i] += 1;
                //没有进位就退出
                if (array[i] < radio) return; else array[i] = 0;                        
        }
        // 最高位溢出 - 标志进位操作已经结束
        (*flow) = 1;
}

/*
* 获取全排列 
*/
int get_pailie(int set[], int set_len, int sub_len, int out_len,int iout[])
{
        int  end_flag = 0;
        int *array    = NULL;
        int  i = 0;
        if ( NULL==set || out_len<sub_len ) return -1;
        if ( (array=(int *)malloc(sub_len * sizeof(int))) == NULL ) return -2;
        // 初始化整数集合为0
        for( i=0; i<sub_len; i++ )  array[i] = 0;
        while( 1 != end_flag )
        {
            for(i=0; i<sub_len; i++) iout[i+idx]=set[array[i]];// 输出结果的每一位与它对应的数的每一位相同
            idx+=4;
            // 下标+1
            add_one(array, sub_len, set_len, &end_flag);
        }
        free(array);
        return 0;
}



int main()
{
    int   set[]={1,-1};
    int   set_len = 2;
    int   sub_len = 4;
    int   iout[64];   //把生成的16组数据保存在一个一维数组中,你以后可以随意调用该数组的
    get_pailie(set, set_len, sub_len,sub_len,iout);
    //以下是输出这16组数据的示例,当然你也可以干一些其他的相关的事情
    for(int i=0;i<64;i++)
    {
        if(i>0 && i%4==0) printf("\n");
        printf("%8d",iout[i]);
    }
    printf("\n");
    return 0;
}

DO IT YOURSELF !
2014-04-24 09:18
风的飞扬0102
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-22
收藏
得分:0 
回复 14 楼 wp231957
非常感谢,不过我还没看懂,我再看看,谢谢了!
2014-04-25 19:11
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:0 
程序代码:
#include <stdio.h>
//函数功能:建立16个2*2矩阵的所有数据的总数据表
void getArr64(int a[])
{   
    int dd[2]={1,-1};
    int i,j,k,h,n=0;

    for(i=0;i<2;i++)
        for(j=0;j<2;j++)
            for(k=0;k<2;k++)
                for(h=0;h<2;h++)
                {
                    a[n++]=dd[i];
                    a[n++]=dd[j];
                    a[n++]=dd[k];
                    a[n++]=dd[h];
                }
}
//函数功能:列出所有矩阵
void putArr64(int a[])
{
    int i;
    for(i=0;i<64;i++)
    {
        if(i%4==0)printf("\n");
        printf("%4d ",a[i]);
    }
    printf("\n\n");
}

//函数功能:从总数据表a中,获取第n个2*2矩阵,放入b
void getArr(int a[],int n, int b[][2])
{
    int i,*p,*q;
    p=a+4*(n-1);
    q=*b;
    for(i=0;i<4;i++,p++,q++)*q=*p;
}

//函数功能:输出2*2矩阵
void printArr(int a[][2])
{
    int i,j;
    for(i=0;i<2;i++)
    {
        for(j=0;j<2;j++)
            printf("%4d ",a[i][j]);
        printf("\n");
    }
    printf("\n");
}
int main()
{  
    int a[64]={0};
    int b1[2][2],b2[2][2];
    int n;

    //建立16个2*2矩阵的所有数据的总数据表
    getArr64(a);

    //列出所有矩阵
    putArr64(a);

    //获取第4个矩阵放入b1,并输出
    n=4;
    printf("第%d个矩阵:\n",n);
    getArr(a,n,b1);
    printArr(b1);
    //获取第7个矩阵放入b2,并输出
    n=7;
    printf("第%d个矩阵:\n",n);
    getArr(a,n,b2);
    printArr(b2);

    return 0;
}
用比较初级的方法做的。希望对楼主有帮助。
2014-04-25 22:37
风的飞扬0102
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-22
收藏
得分:0 
回复 16 楼 kwxx
感谢!
2014-05-03 13:03
快速回复:请帮忙看一看
数据加载中...
 
   



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

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