精华内容
下载资源
问答
  • M=-1,N=-1,输入终止。 输出描述 请按逗号分割顺时针打印矩阵元素(注意最后一个元素末尾不要有逗号!例如输出“1,2,3”,而不是“1,2, 3,”),每个矩阵输出完成后记得换行 示例 输入 3 3 1 ...

    题目描述

    给定一个数字矩阵,请设计一个算法从左上角开始顺时针打印矩阵元素

    输入描述

    输入第一行是两个数字,分别代表行数M和列数N;接下来是M行,每行N个数字,表示这个矩阵的所有元素;当读到M=-1,N=-1时,输入终止。

    输出描述

    请按逗号分割顺时针打印矩阵元素(注意最后一个元素末尾不要有逗号!例如输出“1,2,3”,而不是“1,2,
    3,”),每个矩阵输出完成后记得换行

    示例

    输入

    3 3
    1 2 3
    4 5 6
    7 8 9
    -1 -1

    输出

    1,2,3,6,9,8,7,4,5

    备注

    M,N为正整数且 M*N<=300000

    题目分析

    主要是要注意输入和输出的格式:
    (1)不能用Scanner而改用BufferedReader——这里要记住BufferedReader的使用模板&注意事项:

    1. 需要import的有三个类,也可以直接写:
    import java.io.*;
    

    -----1.1 使用BufferedReader必须在main函数后面写throws IOException
    -----1.2 new一个BufferedReader的代码为

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    

    -----1.3 用br读取一行输入的整数,存储在数组里要这样写:

    String[] s = br.readLine().split(" "); //以空格作为分隔,读入的每一个整数先作为一个字符串存储在数组中
    int[] array = new int[n];
    for(int i = 0; i < n; i++)
        array[i] = Integer.parseInt(s[i]); //再把每个“字符串”形式的整数转换为int型
    

    -----1.4 用br读取多行输入,要写while(br.ready())作为循环条件

    (2)打印矩阵之前不用ArrayList存储所有元素,而用StringBuilder存储

    代码

    Java代码如下:

    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
     
    public class Main 
    {
        public static void main(String[] args) throws IOException 
        {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            while(br.ready()) 
            {
                String[] s = br.readLine().split(" ");
                int m = Integer.parseInt(s[0]);
                int n = Integer.parseInt(s[1]);
                if(m == -1 && n == -1) break;
                int[][] matrix = new int[m][n];
                for(int i = 0; i < m; i++) {
                    String[] temp = br.readLine().split(" ");
                    for(int j = 0; j < n; j++)
                        matrix[i][j] = Integer.parseInt(temp[j]);
                }
                printMatrix(matrix, m, n);
            }
        }
        private static void printMatrix(int[][] mat, int rows, int cols) 
        {
            if(mat == null || rows == 0 || cols == 0) return;
            StringBuilder sb = new StringBuilder();
            //ArrayList<Integer> mac=new ArrayList<>();
            int up=0;
            int down=rows-1;
            int left=0;
            int right=cols-1;
            if(mat == null || rows == 0 || cols == 0)
                return ;
            while(true)
            {
                //最上面一行
                for(int col=left;col<=right;col++)
                   sb.append(mat[up][col]+",");//存入最上面一行的数据
                
                //最上面一行结束,向下逼近
                up++;//上边界向下移动
                
                //判断是否越界
                if(up>down)
                    break;
                
                //最右边一列
                for(int row=up;row<=down;row++)
                   sb.append(mat[row][right]+",");//存入最右边一列的数据
                    
                //最右边一列结束。向左逼近
                right--;//右边界向左移动
                
                //判断是否越界
                if(right<left)
                    break;
                
                //最下面一行
                for(int col=right;col>=left;col--)
                    sb.append(mat[down][col]+",");//存入最下面一行的数据
                
                //最下面一行结束,向上逼近
                down--;//下边界向上移动
                
                //判断是否越界
                if(down<up)
                    break;
                
                //最左边一列
                for(int row=down;row>=up;row--)
                    sb.append(mat[row][left]+",");//存入最左边一列的数据
                
                //最左边一列结束,向右逼近
                left++;
                
                //判断是否越界
                if(left>right)
                    break;
            }
            
            //打印
            System.out.println(sb.substring(0,sb.length()-1));
        }
    }
    
    展开全文
  • 标签的 value 值,只能获取 数字部分字母开始全部没有 后来查阅文章后发现 获取的时候会强制转换成为number类型,所以获取不完整的value $(document).on("click", "#clickStage", function() { alert...

     

    当用JS获取此<li>标签的 value 值时,只能获取到 数字部分字母开始全部没有

    后来查阅文章后发现

    当获取的时候会强制转换成为number类型,所以获取不到完整的value

    $(document).on("click", "#clickStage", function() {
            alert(this.value);
        })
    
    /*这样输出的结果为字母前面的数字,例如value='297a67895'
      输出后为 ------297-------*/

    改变方式,修改为如下方式就可正常显示:

    $(document).on("click", "#clickStage", function() {
            alert(jQuery(this).attr("value"));
        })
    
    /*例如value='297ad56897', 输出后结果为: -------297ad56897------- */

    记录问题,发现问题,给各位伙伴一个参考;

    展开全文
  • T1(poj2601) 题解 二分后线性判断即可 T2(poj1818) ...第一次看这题没看懂题意,就没做 ...后来看课件顺便看了下这题题解,发现根本不明白他在说什么 ...这样晋级的都是尽可能蔡的,晋只...

     T1(poj2601)

     题解

     二分后线性判断即可

     

     T2(poj1818)

     题解

     不好意思之前写错了

     第一次看这题时没看懂题意,就没做

     后来看课件时顺便看了下这题题解,发现根本不明白他在说什么

     上网查 poj1818 才发现原来是让求哪个最蔡的人有机会当冠军……

     那显然让每个蔡的跟他可能打过的最强的打,并假设蔡的打赢了

     这样晋级的都是尽可能蔡的,晋到只有一个人时这个人显然也是极尽可能蔡的

     然后考虑怎么设计打的方案。这块我卡住了,看来我还是太蔡了

     看了一眼题解最上面一行,发现写了一句“倒推局面”,然后我就赶紧关了题解继续想,好像还挺好想的

     我们假设冠军是某个人,那上一轮我们显然要让他跟他能打过的最强的那个打

     再上一局我们再让这俩人分别跟除他俩之外他们能打过的最强的那个打

     以此类推,让每个晋级的人在上一轮都挑一个没晋到这一级的最强的打

     如果在某一个轮,某个晋级的在上一轮找不到他能打过的,那冠军的假设就被推翻了,我们需要换一个实力分数更小的冠军

     否则换一个实力分数更大的冠军,因为如果当前假设的冠军有可能当冠军,那实力分数比他小的人肯定也能当冠军

     二分优化即可

     

     贪心好像不难啊,没啥可讲的吧,但我脑残没想出来倒推

     

     T3

     题解

     二分答案

     想到了把大于 $mid$ 的数变成 $1$,小于 $mid$ 的数变成 $0$

     但我昨晚没把纸和笔带回公寓,然后脑回路比较短没想出规律

     找 scb 大佬一块讨论,他帮我画了一下,发现规律就是连续的一段 $0$ 或 $1$ (长度 $\ge 2$)会一直往上走,然后 $01010$ 这样的非连续段往上走时会取反

     再手玩一下就会发现非连续段两端的数由于取反后就会并入左邻和右邻的连续段,所以哪个连续段先走到最中间那一格谁就赢了,它就会随连续段一直到达顶端

     所以 $check$ 函数判断一下离中间最近的连续段是 $0$ 还是 $1$ 即可。

     显然不可能存在 $0$ 的连续段和 $1$ 的连续段都离中间最近的情况,这个想到后验证一下就好了

     

     后记

     没时间,鸽了

    转载于:https://www.cnblogs.com/scx2015noip-as-php/p/2019_7_23.html

    展开全文
  • 第三题 求解最大素因子:在网上学一种新方法:(筛法) 1,开辟一个数组空间,初始化为0;0和1的素因子默认0,故 i 从2开始循环;...3,最外层for循环,判断a[ i]不是0,说明此处坐标位置 i 是合数...

    第三题

    求解最大素因子:在网上学到一种新方法:(筛法

    1,开辟一个数组空间,初始化为0;0和1的素因子默认0,故 i 从2开始循环;

    2,j 的初值是 i ,每次循环又加上 i ,即 j 每次都存的是 i 的倍数。通过a[ j ]将 j 位置上的数赋值为 i ,也就是 j 可能的最大素因子是 i 。  

    3,最外层for循环,当判断a[ i ]不是0时,说明此处坐标位置 i 是合数,就不执行内层for循环了,然后 i ++。所以 I 每次记录的都是素数。

    #include<iostream>
    #define max 10010
    using namespace std;
    int a[max]={0};
     
    void num_prime()
    {
    	int i,j;
    	for(i=2;i<100;i++)
    	{
    		// a[max]初始化全为0,都能通过这个条件 
    		if(!a[i])
    		{
    			for(j=i;j<100;j=j+i){ // 倍数
    			   a[j]=i;   //更新最大素数 
    			   cout<<"I:"<<i<<" J:"<<j<<endl; 
    			} 
    		}
    	}
    }

    但是这种方法,在本地的IDE上可以执行,OJ消耗内存可能过大,出现段错误。所以改用以下最常规的方法,将num从质数2开始除,将最后除尽的数重新赋值给num,如果num>1,说明还有大于根号原num的质数(即为原num的最大素因子)。如果num=1,说明通过这多次循环刚好除尽。

    /*
    1,从字符串中取出数字
    2,计算该整数的最大素因子
    3,如果没有数字或0则输出0
    */ 
    #include<iostream>
    #include<cstdio> 
    #include<cstring>
    #define max 1000010
    using namespace std;
    int a[max]={0};
    // 求取最大素因子 
    int maxPrimeFactor(int n){
    	int i,ans=0;
    	for(i=2;i*i<=n;i++){
    		while(n%i==0){
    			ans=i;
    			n/=i;  // 这里的i就记录的是每一个素数,如i=4,4是2的倍数,所以在i=2时,n已经将2除尽,故当i=4时并不会执行循环语句
    		}
    	}
    	if(n>1)ans=n;
    	return ans;
    }
    
    int main()
    {
    	int n; 
    	while(cin>>n){		
    		char str[n]; // 键入n条字符串 
    		for(int i = 0; i < n; i++){
    			scanf("%s",str);
    			int len = strlen(str);
    			unsigned int num = 0; 
    			for(int j = 0; j < len; j++){
    				if(str[j] >= '0' && str[j] <= '9'){
    					num = num * 10 + (str[j] - 48); // 提取数字 
    				}
    			}
    			cout<<maxPrimeFactor(num)<<endl;
    		}
    	} 
    	return 0;
    }

    判断是否是素数: 

     查找一定范围内的素数集,可以通过枚举1---n

    /*
    因子分解 
    */ 
    #include<iostream>
    #include<cstdio> 
    using namespace std;
    #define max 100000010 // 测试用例太大时,开辟的数组太大耗费内存 
    int a[max]={0};
    int num = 0;
    void fun(int n){
    	for(int i=2;i<=n;i++){
    		if(n%i==0) num++; // 记录质因子数	
    		while(n%i==0){
    			a[i]++;  // i为n的质因子 ,a[i]为该因子的次数 
    			n/=i;	
    		}
    	}
    }
    
    int main()
    {
    	int n;
    	while(cin>>n){
    		fun(n);
    		if(n==1)  cout<<"1=1"<<endl;
    		cout<<n<<"=";
    		for(int i=2;i<=n;i++){
    			if(a[i]!=0) cout<<i;
    			if(a[i]>1) cout<<"^"<<a[i];
    			if(num>1&&a[i]!=0) {
    				cout<<"*";
    				num--;
    			}
    		}
    		cout<<endl;
    		memset(a,0,sizeof(a)); // 注意归零 
    		num=0;
    	}
    	return 0;
    }

    但是最后两个十位数字测试时就不行了。

    书上答案:

    (1)将因子及其个数用结构体存储;用num记录素数因子的个数

    (2)使用素数判断函数以及素数表

    (3)然后在main函数中得出所输入n的素因子及其个数。

    (4)最后按格式输出结果,第一个因子前不需要“*”,所以当i>0时输出“*”,最后一个因子和后面不需要,所以将“*”放在开头。

     

     

     

     

    展开全文
  • GA 374-2019 电子防盗锁

    2019-10-24 11:49:03
    在主锁舌强度方面,新标准还新增了“钩舌/爪舌作为智能锁的主锁舌”的相关要求,具体要求请见上表。 在手动部件的强度方面,新标准的要求也有提升。2001版标准在手动部件方面的强度要求不分A/B级别,只要施加...
  • 2019寒假第六题

    2019-02-10 19:24:07
    我们寻找的第一个非空字符为正或者负号,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了...
  • Fjord趋势2019-英文版

    2019-02-14 11:27:00
    消费者趋于屏蔽数字技术带来的信息过载,企业需要了解如何创造价值,以抓住渴望清静的消费者。 过去,消费者追求新奇、兴奋和即时满足;而今,他们拒绝那些哗众取宠的企业。因此,“正念设计”的理念在大型高...
  • 金盾2019破解版

    2016-12-22 11:15:13
    用户和商家,商家再也不用发愁用户总是更换系统、更换硬件了,直接将用户的移动设备 作硬件加密锁。 3、加密后的文件增加了绑定用户显卡功能,用户机器码格式变为: 系统BIOS-硬盘-显卡-网卡,多硬件识别可以让您...
  • 2019数据运营思维导图

    2019-03-29 21:34:09
    以目标为导向,学会数据拆分 细分极致 追踪思路 运营的问题,是追踪出来的,不是一次就看出来的 所有的数据都是靠积累和沉淀才能发现问题,单一的数字没有任何 意义,只能称为 “数值” 结合/拆分思路 追踪数据,...
  • 小明对位中含有 2、0、1、9 的数字很感兴趣,在 1 40 中这样的包 括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 2019 中,所有这样的的和是多少? 2.试题B:矩形切割 本...
  • 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左...因此从右上角开始查找,要查找数字比右上角数字,下移; 要查找数字比右上角数字小时,左移;如果出了边界,则说明二维数组中不...
  • 题意:一个数字只有它的因数为2,3,5,7(其中的一个或多个) 那么它就是简单,求第n个简单。 借鉴了 大神的代码(很简洁)。 简单的说,最笨的方法就是从1无穷大的遍历,而我们需要更简单的方法就是用...
  • 思路:取一个辅助数组,a[i]==a[i-1]b[i]=b[i-1]+1,否则b[i]=1,即b[i]为i之前重复出现数字的重复次数,每次询问由于l之前可能有重复,就暴搜直到出现不重复的位置t,tr就可以用ST表求区间最大值,取这两...
  • 我们寻找的第一个非空字符为正或者负号,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了...
  • 我们寻找的第一个非空字符为正或者负号,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了...
  • 2019/01/06求奇数和

    2019-01-06 13:52:46
    零或负整数,表示输入结束,该数字不要处理。 输出格式: 在一行中输出正整数序列中奇数的和。 输入样例: 8 7 4 3 70 5 6 101 -1 输出样例: 116 #include&lt;stdio.h&gt; int main() { int n,sum=0....
  • 特别的,小Q走上数字0方块,他会得到0分,然后将这个方块销毁掉。 若在'<'或'>'方块上,他会改变接下来前进的方向,‘<’代表向左,‘>’代表向右。 特别的若小下一个走...
  • 1001 签到。输出A&...(考虑该区间可能没有大于等于k的数字,可以在n+1位置插入数字n+1,就一定能查询了。所以每次查询区间[r+1,n+1]第一个大于等于k的数字。)对于操作1,可以将加了1e7...
  • 腾讯校园招聘笔试 2019-8-17 第四题

    千次阅读 2019-08-18 23:06:43
    小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。...输入第一行将包含一个数字n,表示楼的栋,接下来的一行将包含n个数字wi(1<=i<=n),代表一栋楼的高度。...
  • 我们寻找的第一个非空字符为正或者负号,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了...
  • 【题解】 题意:输出S中所有大于T的...dp[i][j] 表示S推导位置 i ,长度为 j 的数字子序列的个数,我们只要在长度为1的时候特殊处理0的情况就可以排除前导0的干扰了。递推式:dp[i][j]=dp[i-1][j]+dp[i-1]...
  • 一 1、入栈序列为ABCDE,是否可能存在BCAED和DBACE的出栈序列, 说明原因。...2、n×n的反对角矩阵, ai,ja_{i,j}ai,j​=0i+j≠n+1。 (1)写出一个4×4反对角矩阵。 (2)写出将反对角矩阵压缩一个
  • 将从Web检索的作品转换为可在图书馆中找到的存档和记录的资料,在该图书馆中可以找到的作品数量可能远远大于从Web上收获的作品数量。 本文旨在介绍与现有法律框架有关的某些问题以及适用于TDM的技术/图书馆...
  • 作者:GWD 时间:2019.7.1 ...1、程序功能:P3.2(INT0)的敲击传感器检测敲击,触发外部中断(低电平触发),P2^1的LED灯点亮1S; 2、程序现象: 3、代码 #include<reg52.h> //包含头文件,一般情...
  • 零或负整数,表示输入结束,该数字不要处理。 输出格式: 在一行中输出正整数序列中奇数的和。 输入样例: 8 7 4 3 70 5 6 101 -1 输出样例: 116 #include <stdio.h> int main(){ int n; ...
  • 2019.4.16 ...2.将数字按位数平分为两部分,将数字从高位低位取出并翻转,相等,即为回文。 传送门:回文 Determine whether an integer is a palindrome. An integer is a ...
  • 大数据文摘出品作者:周素云我们在讨论人工智能、...从农业经济、工业经济到数字经济,数据起到什么作用, 它能给工业的数字化转型带来什么?在上周品玩主办的2019科技创新者大会上,国家工业信息安全发展研究...
  • 可以确定类型,有一些专门技术允许实现提供有效的全类型复制功能。 通用操作包括: 该序列的数据类型 写,读 施工 高效可变的副本容器中。 稀疏缓冲区支持 n维张量支持 功能数学支持 设计文档在。 有用的...
  • 于是人们提出了稳定币的概念,试图以法定货币相对稳定性的特性映射到数字货币市场,故以USDT为先行者选择美元作为锚定物,按照1:1的比例在数字货币市场发行,试图以此作为其他数字货币的交易对手和价值尺度来稳定...

空空如也

空空如也

1 2 3 4 5
收藏数 83
精华内容 33
关键字:

当数到数字2019时