zoukankan      html  css  js  c++  java
  • 蛇形串---------

     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("
    ");
            }
        }
    }
    
    
    
     
  • 相关阅读:
    判断输入的年份是闰年还是平年!!!
    键盘接收数,接收运算符号进行运算!!
    eclipse项目上如何传到码云上!新手,简单易懂,希望对你有所帮助。
    jquery dialog弹出框简单写法和一些属性的应用,写的不好,大佬勿喷!谢谢!
    新手冒泡排序,随机生成十个数。
    新手java九九乘法表
    Lambda表达式
    如何删除gitee仓库的文件
    Collection方法
    java冒泡排序的几种写法
  • 原文地址:https://www.cnblogs.com/A-FM/p/5272568.html
Copyright © 2011-2022 走看看