教你夺冠


私信TA

用户名:835685327

访问量:148312

签 名:

相互交流 相互学习

等  级
排  名 13
经  验 21564
参赛次数 0
文章发表 84
年  龄 0
在职情况 学生
学  校 辣鸡施工大学
专  业

  自我简介:

努力刷题 熟能生巧!

这种题目往往都是找出各个元素之间的规律。

1 我们可以发现,每一行的首元素之间的规律为:

  a(n) = a(n - 1) + n - 1;

  a(1) = 1;

  这个结论很容易就用一个for循环实现。

2 再找出每一行元素之间的规律:

  当输入的正整数为N时,第rows行将要输出 N-rows+1 个元素,而每行首元素和首元素下一个元素之间的增量inc为 rows+1,往后元素之间增量加1。


知道上面的规律之后就可以写程序了,参考代码如下:

#include <stdio.h>

//N为总行数,rows为第几行,打印该行数据
void printN(int N, int rows)
{
    //确定第rows行的第一个元素的值:a(n) = a(n-1) + n - 1; a1 = 1;
    int first = 1;
    int i;
    for (i = 1; i <= rows; i++)
    {
        first += i - 1;
    }

    //第rows行的第一个元素为first
    int tmp = first;
    //第rows行的元素之间的增量inc从rows+1开始
    int inc = rows + 1;
    for (i = 1; i <= N - rows + 1; i++) //输出第rows行的元素,共有N-rows+1个
    {
        //输出元素时,该行最后一个元素后面没有空格符
        if (i < (N - rows + 1))
            printf("%d ", tmp);
        else
            printf("%d", tmp);

        tmp += inc; //每一个元素都是前一个元素加上inc
        inc++;      //inc++
    }
}

int main()
{
    int N;
    scanf("%d", &N);

    //输出N行数据
    int i;
    for (i = 1; i <= N; i++)
    {
        printN(N, i);
        printf("\n");
    }

    return 0;
}


 

0.0分

64 人评分

  评论区

这个tmp是什么
2023-03-29 18:23:29
#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	int a[10][10]; 
	int i, j, c;
	a[0][0] = 1;
	for (i = 0; i < n; i++)
	{
		c = i + 2;
		for (j = 0; j < n; j++)
		{
			printf("%d ", a[i][j]);
			a[i][j + 1] = a[i][j] + c;
			c = c + 1;
			if (i + j == 4)
			{
				printf("\n");
				a[i + 1][0] = a[i][0] + i + 1;
				break;
			}
		}
	}
}
2022-03-20 21:19:23
看看我的
#include<stdio.h>

int main(void)
{
  int a;
  scanf("%d",&a);		 
  
  int change = 0;	
  for(int i = 0; i < a; i++)
  {
  	int number = 0; 
	number = change;	
  	for(int j = 0; j < a - i; j++)	
  	{   
		number = i + j + number; 
  		printf("%d ",++number);
	  }
	  change = i + change;
	  printf("\n");
   } 
  return 0;
}
2022-03-15 22:20:52
#include <bits/stdc++.h>
using namespace std;
int arr[101][101];
int main(){
	int n;
	int num=1;
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<=i;j++){
				arr[i-j][j]=num;
				num++;				
		}
	}	
	for(int i=0;i<n;i++){
		for(int j=0;j<n-i;j++){
				cout<<arr[i][j]<<" ";				
		}
		cout<<endl;
	}
	return 0;
}
2022-02-27 10:06:05
#include<stdio.h>
  void fun(int a,int b)
{ int c,d,e=1,g;
g=b-1;
for(d=1;d<=b-1;d++)
{ e=e+d;
	
}
for(c=0;c<=a-b;c++)
{  e=e+g;
   g++; 8
 printf("%d ",e);
}
	
}
  int main()
  {
  	int a,b,c,d;
  	scanf("%d",&a);
  	for(b=1;b<=a;b++)
  	{
  		fun(a,b); printf("\n");
	  } 
  }  为什么我这个蛇是倒着跑的
2021-12-06 15:28:32
#include<stdio.h>
#include<string.h>
#define m 100
int main()
{
	int n,a[m][m],l,l1,l2,l3;
	n=l2=l3=l=0;
	l1=2;
	memset(a,0,sizeof(int));
	scanf("%d",&n);
	a[0][0]=1;
	for(int i=1;i<n;i++)   //定义第一列// 
	{   
	   	l++;
	   	a[i][0]=l+a[i-1][0];
    }
 
    l3=n;
	for(int j=0;j<n;j++)
	{
		l2=l1+j;
	 	for(int i=1;i<l3;i++)
	 	{
	 	    a[j][i]=a[j][i-1]+l2;
			l2++;	
		}
		l3--;
	}
	for(int j=0;j<n;j++)
	{
	 	for(int i=0;i<n;i++)
	 	{
	 	   	if(a[j][i]!=0)
	 	   	{
	 	   		printf("%d ",a[j][i]);
			}
		}
		printf("\n");
	}
	return 0;
}
2021-11-17 21:14:23
#include <iostream>
using namespace std;
int a[21][21];
int main()
{
	int n,num=1,i,k,q;
	cin>>n;
	for(int i=1;i<=n;i++){
	q=1;
		for(int k=i;k>=1;k--){
			a[k][q]=num;
			num++;
			q++;
		}
	}
	for(int i=1;i<=n;i++){
	for(int j=1;j<=n;j++){
		if(!a[i][j]) continue;
		cout<<a[i][j]<<" ";
	}
	cout<<endl;
}
	return 0;
}
2021-03-28 14:19:02
#include<stdio.h>
int main()
{
    int n,a=0;
    scanf("%d",&n);
    for(int i=1;i<n+1;i++)
    {
        for(int j=i;j<n+1;j++)
        {
            a+=j;
            printf("%d ",a);
        }
        printf("\n");
        a=((i+1)*i)/2-i;
    }
}
2021-03-27 22:01:28