蛇形串---------

 1 题目描述
 2 萌萌哒 孟孟学长  参加去年的训练的时候,蛇形矩阵那题被他分分钟秒掉,于是他决定出一个更难的题目,要求矩阵里的每个数都是质数,而且,蛇形的规则也有变化
 3 如2*3矩阵:   
 4 
 5       2     13     11
 6       3      5      7
 7 
 8 
 9 再如3*4的矩阵
10 
11       2     29     23     19
12       3     31     37     17
13       5      7     11     13
14 
15 
16 
17 输入
18 第一行为一个正整数T,表示数据的组数,接下来T行,每行两个正整数n,m,表示矩阵有n行m列
19 输出
20 对于每一个输入输出n行,每行m个数,表示这个矩阵,输出内容见题目描述,每个数输出宽度为 7
21 样例输入
22 2
23 2 3
24 3 4
25 样例输出
26       2     13     11
27       3      5      7
28       2     29     23     19
29       3     31     37     17
30       5      7     11     13
31 提示
32 1<=n,m<=100
不管未来从事什么都要能沉的下去,这样才可以 浮上来  ,  例如 这一道题因为自己不想写浪费了不少时间 最后 在纸上  经过一段时间的 思考之后   就做出来了     应该沉的下去  
不论做什么事 , 都要有一颗巨匠的心 , 原因沉住气去打造一把绝世宝剑 .

 

 当出现 错误的时候  多想想那些  可能出错的   输入输出  
最早的时候 就是 输入 5 1 的时候 出现错误 发现 重复赋值了 这时候 最简单 快捷的方法就是 直接 memset归零 赋值的时候 检查有没有 重复赋值
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
bool isPrime(int num)
{
    if (num == 2 || num == 3)
    {
        return true;
    }
    if (num % 6 != 1 && num % 6 != 5)
    {
        return false;
    }
    for (int i = 5; i*i <= num; i += 6)
    {
        if (num % i == 0 || num % (i+2) == 0)
        {
            return false;
        }
    }
    return true;
}
int prime[10000],pri;
int a[131][131];
int main()
{
    int n,m,t,i,q,j;
    for(pri=0,i=2;i<100000;i++)
    {
        if(isPrime(i))
            prime[pri++]=i;
    }
    scanf("%d",&t);
    while(t--)
    {
        memset(a,0,sizeof(a));
        scanf("%d%d",&n,&m);     //  输入 矩阵的 行列
        q=n<m?n:m;
        q/=2;
        q++;
        for(pri=i=0;i<q;i++)
        {
            for(j=i;j<n-i&&!a[j][i];j++)
                a[j][i]=prime[pri++];
            for(j=i+1;j<m-i&&!a[n-i-1][j];j++)
                a[n-i-1][j]=prime[pri++];
            for(j=n-2-i;j>=i&&!a[j][m-i-1];j--)
                a[j][m-i-1]=prime[pri++];
            for(j=m-2-i;j>i&&!a[i][j];j--)
                a[i][j]=prime[pri++];
        }
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                printf("%7d",a[i][j]);
            }
            printf("\n");
        }
    }
}

 

 

 

posted @ 2016-03-13 17:32  X-POWER  阅读(268)  评论(0编辑  收藏  举报