输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 (MD花了半天时间,思路不对害死人)

  1 输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限
  2
  3 比如:
  4
  5 输入:5 18
  6
  7 输出:
  8
  9 1  2  3  4  5
 10
 11 16 17 18 0  6
 12
 13 15 0  0  0  7
 14
 15 14 0  0  0  8
 16
 17 13 12 11 10 9
 18
 19
 20
 21 输入: 4 12
 22
 23 输出:
 24
 25 1 2 3 4
 26
 27 12 0 0 5
 28
 29 11 0 0 6
 30
 31 10 9 8 7
 32
 33 #include<stdio.h>
 34
 35 int main(void)
 36 {
 37     int n,m,i,j,temp;
 38     int dir = 0;  //0向右,1向下,2向左,3向上,
 39     scanf("%d%d",&m,&n);
 40     int arr[m][m];
 41
 42     //对数组初始化 arr[m][m] = {0}编译不通过
 43     for(i=0; i<m; i++)
 44     {
 45         for(j=0; j<m; j++)
 46         {
 47             arr[i][j] = 0;
 48         }
 49     }
 50
 51     i = j = 0;
 52     temp = 1;
 53     while(temp <= m*m)
 54     {
 55         if(temp > n)break;
 56         arr[i][j] = temp;
 57         switch(dir)
 58         {
 59             case 0:
 60             {
 61                 if(j+1 == m || arr[i][j+1] > 0)
 62                 {
 63                     i++;
 64                     dir = 1;
 65                 }
 66                 else j++; break;
 67             }
 68             case 1:
 69             {
 70                 if(i+1 == m || arr[i+1][j] > 0)
 71                 {
 72                     j--;
 73                     dir = 2;
 74                 }
 75                 else i++; break;
 76             }
 77             case 2:
 78             {
 79                 if(j - 1 < 0 || arr[i][j-1] > 0)
 80                 {
 81                     i--;
 82                     dir = 3;
 83                 }
 84                 else j--; break;
 85             }
 86             case 3:
 87             {
 88                 if(arr[i-1][j] > 0)
 89                 {
 90                     j++;
 91                     dir = 0;
 92                 }
 93                 else i--; break;
 94             }
 95         }
 96         temp++;
 97     }
 98
 99     //打印数组
100     for(i=0; i<m; i++)
101     {
102         for(j=0; j<m; j++)
103         {
104             printf("%3d",arr[i][j]);
105         }
106         printf("\n");
107     }
108     return 0;
109 }
时间: 2024-10-14 00:40:29

输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 (MD花了半天时间,思路不对害死人)的相关文章

输入两个实数,用一个函数求出它们之和

/*p180 例7.4 输入两个实数,用一个函数求出它们之和 解题思路:首先要定义add函数,它为float型,它应有两个参数,也应为float型. 特别注意:要对add函数进行声明.*/ #include<stdio.h>int main(){ float add(float x,float y); //对add函数作声明 float a, b, c; printf("please enter a and b:"); //提示输入 scanf("%f,%f&qu

Markdown解决需要输入两个回车才能为一个空行的问题

markdownDataDiv.children().each(function(){ $(this).html($(this).html().replaceAll("\n","<br/>")); });

面试题9-用两个栈来实现一个队列,完成队列的Push和Pop操作

题目 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 一个栈压入元素,而另一个栈作为缓冲,将栈1的元素出栈后压入栈2中 代码 import java.util.Stack; /** *两个栈实现一个队列 * @author MSI */ public class Requeue{ Stack<Integer> sk1=new Stack<Integer>(); Stack<Integer> sk2=new Stack<

打印NxN的矩阵

找出规律,并打印出一个NxN的矩阵,规律就是从首坐标开始顺时针依次增大: 1 #include<iostream> 2 #include<vector> 3 4 using namespace std; 5 6 int main(void) 7 { 8 9 int N; 10 cout << "Input a num:" << endl; 11 cin >> N; 12 while (N < 0) 13 { 14 cou

编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果

编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果 import javax.swing.JOptionPane; public class Test{ public static void main(String[] args) { int n1=Integer.parseInt(JOptionPane.showInputDialog("Input number 1: ")); int n2=Integer.parseInt(JOptionPane.showInpu

有序数组中两个数的和等于一个输入值的函数

题目:        输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.要求时间复杂度为O(N). 如果有多对数字的和等于输入的数字,输出任意一对即可. 例如输入数组1,2,4,7,11,15和数字15,由于4+11=15,因此输出4和11. 代码如下: /*data[] 为有序数组, length 为数组的长度 sum为用户输入的和 num1 为符合和等于sum的第一个数 num2 为第二个数*/ #include<iostream> using

输入10个整数,把其中最小的数与第一个数交换,最大的数与最后一个数交换。

输入10个整数,把其中最小的数与第一个数交换,最大的数与最后一个数交换.使用3个函数解决问题: (1) 输入10个整数的函数 (2) 进行交换处理的函数 (3) 输出10个数的函数 输出格式 输出结果,一行一个数字 输入样例 2 1 3 4 5 6 7 8 9 0 输出样例 input done swap done 0 1 3 4 5 6 7 8 2 9 display done 1 #include <stdio.h> 2 3 void input(int a[]) 4 { 5 ______

给出一个区间[a, b],计算区间内“神奇数”的个数。 神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数。 比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数。同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数。

给出一个区间[a, b],计算区间内"神奇数"的个数.神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数.比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数.同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数. 输入描述: 输入为两个整数a和b,代表[a, b]区间 (1 ≤ a ≤ b ≤ 10000). 输出描述: 输出为一个整数,表示区间内满足条件的整数个数 输入例子: 11 20 输出例子: 6 1 #in

html js在页面中输入两个数计算和

费了很大功夫,之前写的跟这个差不多,但是就是不能正常运行,找不到原因,这个搞定的记录一下 1 <html> 2 <head> 3 <title></title> 4 <meta name="generator" 5 content="HTML Tidy for HTML5 (experimental) for Windows https://github.com/w3c/tidy-html5/tree/c63cc39&qu