1. linux最新稳定版本号
简单介绍下Linux的版本号,原文在这:
linux内核版本号格式
major.minor.patch-build.desc
- major:表示主版本号,有结构性变化时才变更。
- minor:表示次版本号,新增功能时才发生变化;一般奇数表示测试版,偶数表示生产版(稳定版)。
- patch:表示对次版本的修订次数或补丁包数。
- build:表示编译(或构建)的次数,每次编译可能对少量程序做优化或修改,但一般没有大的(可控的)功能变化。
- desc:用来描述当前的版本特殊信息;其信息由编译时指定,具有较大的随意性,但也有一些描述标识是常用的,比如:
- rc(有时也用一个字母r),表示候选版本(release candidate),rc后的数字表示该正式版本的第几个候选版本,多数情况下,各候选版本之间数字越大越接近正式版。
- smp,表示对称多处理器(Symmetric MultiProcessing)。
- pp,在Red Hat Linux中常用来表示测试版本(pre-patch)。
- EL,在Red Hat Linux中用来表示企业版Linux(Enterprise Linux)。
- mm,表示专门用来测试新的技术或新功能的版本。
- fc,在Red Hat Linux中表示Fedora Core。
Alpha版本是内部测试版,是比Beta版还早的测试版,一般不向外部发布,会有很多Bug,除非你也是测试人员,否则不建议使用。
Beta版本是测试版,这个阶段的版本会一直加入新的功能。
RC版本(Release Candidate) 是发行候选版本。和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错。
RTM版本(Release to Manufacture)是给工厂大量压片的版本,内容跟正式版是一样的。
OEM版本是给计算机厂商随着计算机贩卖的,也就是随机版。只能随机器出货,不能零售。只能全新安装,不能从旧有操作系统升级。如果买笔记型计算机或品牌计算机就会有随机版软件。包装不像零售版精美,通常只有一面CD和说明书(授权书)。
RTL版本(Retail)是真正的正式版,正式上架零售版。
这道题给你几个版本号,找出最新的稳定版,就是minor为偶数的。我的做法是排序,然后从最新的遍历就好了,麻烦的是输入数据的转化。
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include<stdio.h>
#include <sstream>
using namespace std;
int n;
struct nn
{
int major,minor,patchlevel;
} node[1000];
bool cmp(nn a, nn b)
{
if(a.major != b.major) return a.major>b.major;
if(a.minor != b.minor) return a.minor>b.minor;
return a.patchlevel>b.patchlevel;
}
int main()
{
scanf("%d", &n);
getchar();
string s;
for(int i=0; i<n; i++)
{
getline(cin, s);
s.append(".");
int ss=0, cnt=0, tmp;
node[i].major=node[i].minor=node[i].patchlevel=0;
while(1)
{
stringstream in;
int p=s.find(".", ss);
if(p == string::npos)
break;
in << s.substr(ss, p-ss);
ss = p+1;
in >> tmp;
if(cnt == 0)
node[i].major=tmp;
else if(cnt ==1)
node[i].minor=tmp;
else if(cnt ==2 )
node[i].patchlevel=tmp;
cnt++;
}
}
sort(node, node+n, cmp);
int flag = 0;
for(int i=0; i<n; i++)
{
if(node[i].minor%2==0)
{
cout << node[i].major;
cout << ".";
cout << node[i].minor;
if(node[i].patchlevel != 0)
{
cout << ".";
cout << node[i].patchlevel;
}
cout << endl;
flag = 1;
break;
}
}
if(flag == 0)
cout << "no available standversion" << endl;
return 0;
}
2. 重复数字
给定三个数组,每个数组内部数字不重复,求三个数组的重复数字,从小到大输出。
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include<stdio.h>
#include <map>
#include <sstream>
using namespace std;
int main()
{
map<int,int> xx;
map<int ,int >::iterator ll;
int length;
for(int i=0; i<3; ++i)
{
scanf("%d", &length);
for(int j=0; j<length; ++j)
{
int tmp;
scanf("%d", &tmp);
ll=xx.find(tmp);
if(ll == xx.end())
xx.insert(pair<int, int> (tmp, 1));
else
xx[tmp]++;
}
}
int flag = 0;
for ( ll = xx.begin(); ll != xx.end(); ll++ )
{
if (ll->second == 3)
{
if(flag == 0)
cout << " ";
cout << ll->first;
flag = 1;
}
}
return 0;
}
3. 死锁检查
给出线程id,拥有的资源,等待的资源,计算死锁的个数。
这题代码还未完成,先给个大致思路:
根据资源的拥有和等待,建立有向图,计算图中环的个数。