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

 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");
        }
    }
}

 
时间: 2024-08-07 22:03:27

蛇形串---------的相关文章

字串符笔记

本章单词: quual:相等的 ignore:忽视 lower:低的 last:最后 trim:忽略不计 concatenate:链接 buffer:缓冲区 final:最终的 &预习一下代码输出结果是什么:  euqals的区别 一.字符串概述 &字符串是一系列字符组成的序列 (1)如何使用字符串: 简单来说,使用字符串主要分为两步 1.定义并初始化字符串 2.使用字符串,对字符串进行一些处理 语法: String s="hello"; 创建String对象的另外两种

最少回文串--牛客网(秋招备战专场三模)-C++方向

题目描述:一个字符串从左向右和从右向左读都完全一样则是回文串,给定一个字符串,问该字符串中的字符所能组成的最少的回文串的个数为多少 解题思路:如果一个字符出现的次数为偶数,则必能组成回文串,如果一个字符出现奇数次,只能自己组成回文串,题目中问最少的回文串数目,即求出现次数为奇数次的字符个数即可,定义a存储每个字符出现的次数,统计出现奇数次的字符的个数,即为输出 1 #include <iostream> 2 #include <string> 3 using namespace s

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

拼接字符串;字符反转;统计大串中小串出现的次数

package Homework; import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Scanner;/** * 把数组中的数据按照指定个格式拼接成一个字符串举例:int[] arr = {1,2,3}; 输出结果:[1, 2, 3] 字符串反转举例:键盘录入"abc" 输出结果:"cba" 统计大串中小串出现的次数举例:在字符串&q

蛇形填数

在n×n方阵里填入1,2,...,n×n,要求填成蛇形.例如,n=4时方阵为: 10  11  12  1 9   16  13  2 8   15  14  3 7    6    5   4 #include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>using namespace std;#define max 100int aa[max][max];int main(

利用冒泡排序实现一串字符串从小到大的排序

实现B/S架构,输入一串字母或数字,将它们按从小到大排序,排序算法在服务端实现. 以下是实现: Test.java import java.io.IOException;import java.io.PrintWriter; import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.ser

LeetCode Generate Parentheses 构造括号串(DFS简单题)

题意: 产生n对合法括号的所有组合,用vector<string>返回. 思路: 递归和迭代都可以产生.复杂度都可以为O(2n*合法的括号组合数),即每次产生出的括号序列都保证是合法的. 方法都是差不多的,就是记录当前产生的串中含有左括号的个数cnt,如果出现右括号,就将cnt--.当长度为2*n的串的cnt为0时,就是答案了,如果当前cnt比剩下未填的位数要小,则可以继续装“(”,否则不能再装.如果当前cnt>0,那么就能继续装“)”与其前面的左括号匹配(无需要管匹配到谁,总之能匹配)

串模式匹配之BF和KMP算法

本文简要谈一下串的模式匹配.主要阐述BF算法和KMP算法.力求讲的清楚又简洁. 一 BF算法 核心思想是:对于主串s和模式串t,长度令为len1,len2,   依次遍历主串s,即第一次从位置0开始len2个字符是否与t对应的字符相等,如果完全相等,匹配成功:否则,从下个位置1开始,再次比较从1开始len2个字符是否与t对应的字符相等.... BF算法思路清晰简单,但是每次匹配不成功时都要回溯. 下面直接贴代码: int BF_Match(char *s, char *t) { int i=0,

串的动态顺序存储代码

由于静态顺序存储使用C语言实现有些麻烦,其次容易产生溢出,因此就不对串的静态顺序存储实现了,而是采用 动态顺序存储,使得存储串的长度可以动态分配存储空间.下面是它的实现代码 #include <stdio.h> #include <stdlib.h> #define OK 1 typedef int Status; typedef struct { char *data; int len; }String; Status strInit(String *T){ T->data