2021.11.24学习总结

总览:

一10:10~11:50 写c语言程序报告

二、4:10~6:00   学习蛇形矩阵和螺旋三角形,刷vj上的题

三、7:00~8:40  写形式与政策,c语言程序报告

四、8:40~10:00 听学长讲结构体、周老师的区间问题。

一、学习流程图,写伪代码,写简单的程序

二、

今天下午刷了3个题,下面是刷题之后个别题的总结以及代码:

1.题目链接字符串与模拟练习 - Virtual Judge (vjudge.net)

思路:确定第一个位置,根据规律从上下左右四个方向向数组进行存值。研究下标与何时存值以及超出边界和下一个位置有值的情况做怎么样的处理。蛇形矩阵同理。

AC代码:

#include<stdio.h>
#include<string.h>
int a[1001][1001];
int main()
{
    int n, i, j, x, T;
    scanf("%d", &T);
    while (T--) {
        i = 0;
        j= 0;
       memset(a,0,sizeof a);
         a[i][j] = 1;
        x = 1;
        scanf("%d", &n);
        while (x < (n * (n + 1) / 2)) {
            while (1) {
                if (j < n - 1 && a[i][j + 1] == 0)
                    a[i][++j] = ++x;
                else
                    break;
            }
            while (1) {
                if (j > 0 && a[i + 1][j - 1] == 0)
                    a[++i][--j] = ++x;
                else
                    break;
            }
            while (1) {
                if (i > 0 && a[i - 1][j] == 0)
                    a[--i][j] = ++x;
                else
                    break;
            }
            while (1) {
                if (j < n - 2 && a[i][j + 1] == 0)
                    a[i][++j] = ++x;
                else
                    break;
            }
        }
        for (i = 0; i < n; i++) {
            for (j = 0; j < n - i; j++)
                printf("%d ", a[i][j]);
            printf("\n");
        }
        printf("\n");
    }
}

2.题目链接字符串与模拟练习 - Virtual Judge (vjudge.net)

思路:分3种情况,全0,全1,有0也有1,第3种的情况的时候找到第一个1的时候记录它的下标,再找到最后1个1记录它的下标,循环计算这区间内有几个0。

AC代码:

#include<stdio.h>
#include<string.h>
int main()
{
	char s[1000];
	int t,i,k,c,x,y,flag;
	scanf("%d",&t);
	getchar();
	while(t--)
	{
		gets(s);
		k=strlen(s);
		flag=1;
		for(i=0;i<k;i++)
		  {
		  if(s[i]=='0');
		  else   break;
	    }
		if(i>=k) 
		{
		printf("0\n");
		flag=0;
		}
		if(flag==1)
		{
	     	for(i=0;i<k;i++)
		   {
		   if(s[i]=='1');
		   else break;
	      }
		  if(i>=k) 
		  {
		  printf("0\n");
		  flag=0;
	    }
	    if(flag==1)
	    {
	    	c=0;
	    	for(i=0;i<k;i++)
	    	if(s[i]=='1')
	    	{
	    		x=i;
	    		break;
			}
			for(i=x;i<k;i++)
			{
				if(s[i]=='1')
					y=i;
			 } 
			 for(i=x;i<y;i++)
			 {
			 	if(s[i]=='0')
			 	  c++;
			 }
			printf("%d\n",c);
	   }
    }
	}
}

三、学长讲的非常好,希望他以后经常讲。

           明天也要加油。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值