当前位置: 代码迷 >> C语言 >> 难题 求高手帮忙
  详细解决方案

难题 求高手帮忙

热度:456   发布时间:2008-05-06 21:51:51.0
看来我看不惯不平得事情....要安静看书了...
----------------解决方案--------------------------------------------------------
哇……复杂的路径计算转为查表,佩服……
----------------解决方案--------------------------------------------------------
/********************************************************
** Highlight software by yzfy(雨中飞燕) http://yzfy.org *
*********************************************************/
#include<stdio.h>
int map_a[36]={ 1, 2, 6, 7,15,16,
                3, 5, 8,14,17,26,
                4, 9,13,18,25,27,
                10,12,19,24,28,33,
                11,20,23,29,32,34,
                21,22,30,31,35,36
               
};
int map_b[36];
void Init()
{
    int n;
    for (n=0; n<36; ++n)
    {
        map_b[map_a[n]-1] = n;
    }
}
void OutPut(int array[6][6])
{
    int* p = (int*)array;
    int n;
    for (n=0; n<36; ++n)
    {
        printf("%3d", p[map_b[n]]);
        if (n%6==5)putchar('\n');
    }
}
int main()
{
    int a[6][6]=
    {
        {11,12,13,14,15,16},
        {21,22,23,24,25,26},
        {31,32,33,34,35,36},
        {41,42,43,44,45,46},
        {51,52,53,54,55,56},
        {61,62,63,64,65,66}
    };
    Init();
    OutPut((int(*)[6])map_a);
    putchar('\n');
    OutPut(a);
    getchar();
    return 0;
}


还是看这个吧,这个有对比,容易看出来是怎么一回事

[color=white]
本帖最近评分记录
2008-05-06 14:03:38
yk19880525

来 自:江汉大学
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-5-5
  得分:0 
回复 33# 的帖子
高手  
高手
但是说实话
我只学了C语言
俺初学者的确还有蛮多不是很懂
再细心研究下

希望你们不要利用我的帖子的空间产生硝烟
大家消消火
----------------解决方案--------------------------------------------------------
楼上不厚道不给我钱...我刚帮你写的呢?不要又说不符合要求哦...
#include <stdio.h>
int main()
{ int i,j;
int a[6][6]={    1, 2, 6, 7,15,16,
                3, 5, 8,14,17,26,
                4, 9,13,18,25,27,
                10,12,19,24,28,33,
                11,20,23,29,32,34,
                21,22,30,31,35,36};
  for(i=0;i<12;i++)
    if(i%2==0)
    {
       for( j=0;j<=i;j++)
         if(i-j<6&&j<6)
        printf("%d ",a[i-j][j]);
      
    }
    else
    {
         for( j=i;j>=0;j--)
          if(i-j<6&&j<6)
            printf("%d ",a[i-j][j]);
    }

    return 0;
}
c可以编译的

[[it] 本帖最后由 sunkaidong 于 2008-5-6 22:20 编辑 [/it]]
本帖最近评分记录

学习需要安静。。海盗要重新来过。。
2008-05-06 14:16:02
yk19880525

来 自:江汉大学
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-5-5
  得分:0 
哦  我正在研究你的
----------------解决方案--------------------------------------------------------
RE

----------------解决方案--------------------------------------------------------
回复 35# 的帖子
又是个C++的
还没有学
看不懂
----------------解决方案--------------------------------------------------------
不是c++,就是c啊...其实运用的思想也很简单
是按反对角线输出..反对角线的特征是i+j=n(第几条)如第0条0+0=0;
第1条0+1=1,1+0=1...同时要控制方向就可以了
----------------解决方案--------------------------------------------------------
回复 39# 的帖子
谢谢大哥
我明白了
不好意思
我那个wintc有问题
所以就运行不出来
我换了vc就可以了
非常感谢
----------------解决方案--------------------------------------------------------
  相关解决方案