2019-07-11嘻嘻明天就能看见老宋了,我的CSDN计划也要暂时搁浅了!!看来我还是没能超过老宋,QAQ……不过假期我会好好努力的,只要没啥事,就一定会更一篇文章,至少保证每天一道题,加油!!!!

1013B 输出第N到M的所有素数……

这个和前面一道题基本一致,比较恶心的是,N和M最大到10000,我并不知道第10000个素数是哪个,就给了很大的一个数,保证不超时就好……

等等,我为什么不计数??哈哈哈哈就这样吧,代码如下:

#include<iostream>
#include<string>
#include<vector>
using namespace std;

int is_prime( int a)
{   int j;
    for(j=2;j*j<=a;j++)
    {
        if(a%j==0)
            return 0;
    }
    return 1;
}

int main()
{
    vector<int>prime;
    int i,m,flag;
    prime.push_back(1);
    prime.push_back(2);
    prime.push_back(3);
    for(i=5;i<214740;i+=2)
    {   flag=1;
        if ( i % 3 == 0)
			continue;
        else  flag=is_prime(i);
        if(flag)
            prime.push_back(i);
    }
    int l,r;
    cin>>l>>r;
    int count=0;
    for(m=l;m<r;m++)
    {
        cout<<prime[m];
        count++;
        if(count==10)
            {
                cout<<endl;
                count=0;
            }
        else cout<<" ";
    }  
    cout<<prime[r];
    return 0; 
}

 1003A emergency!

啊,看题干看了十分钟,很好理解,就是信息量有点大,滤清关系就好!然后思路大概是有的,清楚地意识到要用回溯算法,很好,这是我的薄弱点,试着写了写,然鹅,还是写到最后不写了,有点乱哈哈哈哈哈。

先贴个半成品代码,方便后期修改哈哈哈哈哈哈6

#include<iostream>
#include<stack>
using namespace std;

int main()
{
    int citynum,roadnum,home,sos;
    cin>>citynum>>roadnum>>home>>sos;
    int resnum[500][500]={0};
    int i=0,res;
    while(i<citynum)
    {
        cin>>res;
        resnum[i][i]=res;
        i++;
    }
    int go,to,l;
    int road[500][500]={0};
    i=0;
    while(i<roadnum)
    {
        cin>>go>>to>>l;
        road[go][to]=l;
        //road[to][go]=l;
        i++;
    }
    int j,k,m,n;
    int short=500;int team=1;
    int count=0;
    if(road[now][sos]!=0)
        {
            short=road[now][sos];
            team=resnum[now][now]+resnum[sos][sos];
        }
    is_road(now);
    
return 0;
}

int is_road(int a)
{   for(i=0;i<citynum;i++)
    {   if(road[a][i])
            {
                if(road[now][i]&&(road[now][a]<road[now][i]+road[a][i]))
                    break;
                else
                {   
                    road[now][i]=road[now][a]+road[a][i];
                    resnum[now][i]>=resnum[now][a]+resnum[a][i]?resnum[now][i]:resnum[now][a]+resnum[a][i]; 
                if(i!=sos)
                    is_road(i);
                } 
            }
    } 
    is_road(i); 
   
}

这是一道路径规划题,很多答案涉及到了DFS算法,然后就开始补了一下它的基础知识,这篇文章写的挺好的,我就直接贴链接吧,我总结也总结不好,估计用个两三次才会记住……

Depth First Search英文的缩写,翻译过来就是“深度优先搜索”。(好像在数据结构里面见过……)

https://blog.csdn.net/chensanwa/article/details/79717835

博主总结的好,就是“不撞南墙不回头”的算法,走走走,走不动了往回走(这不就是回溯么……)

DJ阿龙,drug a beat!

然后网上找了很多答案,仿佛看见了曾经的自己,乱命名,以至于变量太多,它写的是个啥???而且发现很多人用了INF,又顺手百度了一下这是个啥。

INF:infinity 无限大,自己定义大小,即在它的生存期内,它最大,可以认为除数为0是=时,商为INF。

NAN:not a number 就可以定义为负数开根号的结果,或者0/0 的答案。

这个博主写的还是比较详细易懂的,我们来看一下!

https://blog.csdn.net/qq_43064271/article/details/82662675

思路大体跟我一致,简单看了下,打算后期看这个修改一下自己的。

随后我打开了《算法笔记》,里面有这道题的官方答案,我能说啥呢,可能是比较高深,所以需要很认真看才能看懂……我觉得还不如民间大神写得好呢。

然后里面有一点知识点,总结一下:

fill(first,last,val)函数,就是指定迭代器的首末端,进行初始化,初始化的值为val;

memset(void *s,int c,n)函数,也是初始化函数,将指针变量s所指向的前n个字节的内存单元用一个整数c替换。

 具体的,可能在以后的博客里更新哈哈哈哈哈……

吃饭去!

发布了42 篇原创文章 · 获赞 16 · 访问量 2888

猜你喜欢

转载自blog.csdn.net/weixin_44412218/article/details/95457635