2012年9月17日

各种最短路径,人太懒~

http://221.192.240.22/index.php/%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84 

posted @ 2012-09-17 17:54 彭托 阅读(108) | 评论 (0)编辑 收藏

2012年9月13日

马踏棋盘所用的两个向量数组

int direct[8][2]={2,1,2,-1,-2,1,-2,-1,1,2,-1,2,1,-2,-1,-2};  //落脚点向量
int judge[4][2]={1,0,-1,0,0,1,0,-1};                                //卡位向量

这里说明一下,在使用的时候可以不用太麻烦,我特意将两个向量对应了起来,如
for(i=0;i<4;i++)  
        
{  
            
if(chess[pos.x+judge[i][0]][pos.y+judge[i][1]]!=1)           //是否卡位
            {  
                
int x=pos.x+direct[i*2][0]; 
                
int y=pos.y+direct[i*2][1]; 
                
if(x<=p&&x>=1&&y<=q&&y>=1&&visited[x][y]!=1&&chess[x][y]!=1)  //该点能否落脚
                {  
                    visited[x][y]
=1;  
                    temp.x
=x;  
                    temp.y
=y;  
                    temp.step
=pos.step+1
                    que.push(temp);     
                }
  
                x
=pos.x+direct[i*2+1][0]; 
                y
=pos.y+direct[i*2+1][1]; 
                
if(x<=p&&x>=1&&y<=q&&y>=1&&visited[x][y]!=1&&chess[x][y]!=1)   //该点能否落脚
                {  
                    visited[x][y]
=1;  
                    temp.x
=x;  
                    temp.y
=y;  
                    temp.step
=pos.step+1;  
                    que.push(temp); 
                }
  
            }
  
        }


posted @ 2012-09-13 11:26 彭托 阅读(131) | 评论 (0)编辑 收藏

2012年9月12日

很好用的矩阵快速幂,给自己留模版<转,原地址忘了>

#include<stdio.h>
#define Max 2
#define kmod 7
typedef struct Matrix{
    int M[Max][Max];
}Matrix;
Matrix P;           //等比矩阵,在main中修正;
Matrix I={1,0,
          0,1}; //单位矩阵,需根据Max扩大;
Matrix Matrixmul(Matrix a,Matrix b){  //矩阵乘法;
    Matrix ret;
    int i,j,k;
    for(i=0;i<Max;i++)
        for(j=0;j<Max;j++)
        {
            ret.M[i][j]=0;
            for(k=0;k<Max;k++)
                ret.M[i][j]+=(a.M[i][k]*b.M[k][j])%kmod;
            ret.M[i][j]%=kmod;
        }
    return ret;
}
Matrix quickpow(__int64 n){     // 快速幂;
    Matrix m=P,b=I;
    while(n>0){
        if(n&1)
            b=Matrixmul(b,m);
        n>>=1;
        m=Matrixmul(m,m);
    }
    return b;
}

posted @ 2012-09-12 19:36 彭托 阅读(281) | 评论 (0)编辑 收藏

仅列出标题  
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜