两个经典算法题

我感觉我的写法没什么问题。。。就我取的几个样例也答案完全正确。。但是提交给OJ就是会显示答案错误。。我去网上找的其他人做的答案提交也显示答案错误。。所以请各位大神看看我的写法有没有问题。

题目描述

有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,...,L共L+1个位置上有L+1棵树。
    现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。
    可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下的树的个数。

输入

两个整数L(1<=L<=10000)和M(1<=M<=100)。
    接下来有M组整数,每组有一对数字。

输出

 可能有多组输入数据,对于每组输入数据,输出一个数,表示移走所有区间的树之后剩下的树的个数。

#include<stdio.h>
#include<string.h>
#include <algorithm>
using namespace std;
int main(){    
int i = 0;    
int j = 0;   
int x = 0;    
int t = 0;    
int count = 0;    
int p = 0;    
int q = 0;    
int a[10010];    
while(scanf("%d %d",&x,&t)!=EOF){        
fill(a,a+10010,1);        
    for(count = 0;count<t;count++){            
        scanf("%d %d",&i,&j);            
        for(p=i;p<=j;p++){                
        a[p]=0;            
        }        
        }        
        int sum = 0;        
        for(q=0;q<=x;q++){            
            sum = sum+a[q];        //我是一开始将数组内全置为1,每次砍树,将对应位置的置为0.这样结
            }                      //束后,一开始的规定范围内,1的数量就是剩下树的数量
         printf("%d",sum);        
         sum = 0;    
         }    
         return 0;
         }

第二个问题。。这个问题是有点绕不过来了。。

题目描述

你的任务是计算若干整数的和。

输入

输入的第一行为一个整数N,接下来N行每行先输入一个整数M,然后在同一行内输入M个整数。

输出

对于每组输入,输出M个数的和,每组输出之间输出一个空行。

#include<stdio.h>
int main(){        
int t;        
scanf("d",&t);        
while(t- -){           
 int x;            
 int i=0;            
 int j;            
 int sum = 0;           
  scanf("%d",&x);            
  for(i=0;i<x;i++){               
   scanf("%d",&j);                
   sum = sum+j;            }          
     printf("%d\n",sum);            
     sum = 0;            
     if(t!=0){printf("\n");
     }        
     }    
     return 0;
     }

总之希望大佬来指教

慕姐6162487
浏览 1464回答 1
1回答

修裾欲溯空

你不懂的是?具体一点,难不成要把所以的都讲一下?
打开App,查看更多内容
随时随地看视频慕课网APP