转:Windows版本判断大全
/*****************************************************************************Operating System Version PlatformIDWindows 8 6.2 VER_PLATFORM_WIN32_NT (=2)Windows 7 6.1 VER_PLATFORM_WIN32_NTWindows Server 2008 R2 6.1 VER_PLATFORM_WIN32_NTWindows Server 2008 6.0 VER_PLATFORM_WIN32_NTWindows Vista 6.0 VER_PLATFORM_WIN32_NTWindows Server 2003 R2 5.2 VER_PLATFORM_WIN32_NTWindows Server 2003 5.2 VER_PLATFORM_WIN32_NTWindows XP 64-Bit Edition 5.2 VER_PLATFORM_WIN32_NTWindows XP 5.1 VER_PLATFORM_WIN32_NTWindows 2000 5.0 VER_PLATFORM_WIN32_NTWindows NT 4.0 4.0 VER_PLATFORM_WIN32_NTWindows NT 3.51 3.51 ? VER_PLATFORM_WIN32_NTWindows Millennium Edition 4.90 VER_PLATFORM_WIN32_WINDOWS (=1)Windows 98 4.10 VER_PLATFORM_WIN32_WINDOWSWindows 95 4.0 VER_PLATFORM_WIN32_WINDOWSWindows 3.1 3.1 ? VER_PLATFORM_WIN32s (=0)*****************************************************************************/#include "stdafx.h"#include<windows.h>//#include<tchar.h>//#include <stdio.h>#include<strsafe.h>#pragma comment(lib,"User32.lib")#pragma comment(lib,"Advapi32.lib")//VS2005 Express needed#define BUFSIZE 256#define PRODUCT_ULTIMATE 0x00000001#define PRODUCT_HOME_BASIC 0x00000002#define PRODUCT_HOME_PREMIUM 0x00000003#define PRODUCT_ENTERPRISE 0x00000004#define PRODUCT_HOME_BASIC_N 0x00000005#define PRODUCT_BUSINESS 0x00000006#define PRODUCT_STANDARD_SERVER 0x00000007#define PRODUCT_DATACENTER_SERVER 0x00000008#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009#define PRODUCT_ENTERPRISE_SERVER 0x0000000A#define PRODUCT_STARTER 0x0000000B#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F#define PRODUCT_BUSINESS_N 0x00000010#define PRODUCT_WEB_SERVER 0x00000011#define PRODUCT_CLUSTER_SERVER 0x00000012#define PRODUCT_HOME_SERVER 0x00000013#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019#define PRODUCT_HOME_PREMIUM_N 0x0000001A#define PRODUCT_ENTERPRISE_N 0x0000001B#define PRODUCT_ULTIMATE_N 0x0000001C#define PRODUCT_WEB_SERVER_CORE 0x0000001D#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x0000001E#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x0000001F#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x00000020#define PRODUCT_SMALLBUSINESS_SERVER_PRIME 0x00000021#define PRODUCT_HOME_PREMIUM_SERVER 0x00000022#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x00000023#define PRODUCT_STANDARD_SERVER_V 0x00000024#define PRODUCT_DATACENTER_SERVER_V 0x00000025#define PRODUCT_ENTERPRISE_SERVER_V 0x00000026#define PRODUCT_DATACENTER_SERVER_CORE_V 0x00000027#define PRODUCT_STANDARD_SERVER_CORE_V 0x00000028#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x00000029#define PRODUCT_HYPERV 0x0000002A#define PRODUCT_PROFESSIONAL 0x00000030#define SM_TABLETPC 86#define SM_MEDIACENTER 87#define SM_STARTER 88#define SM_SERVERR2 89/*#define VER_SERVER_NT 0x80000000#define VER_WORKSTATION_NT 0x40000000#define VER_SUITE_SMALLBUSINESS 0x00000001#define VER_SUITE_ENTERPRISE 0x00000002#define VER_SUITE_BACKOFFICE 0x00000004#define VER_SUITE_COMMUNICATIONS 0x00000008#define VER_SUITE_TERMINAL 0x00000010#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020#define VER_SUITE_EMBEDDEDNT 0x00000040#define VER_SUITE_DATACENTER 0x00000080#define VER_SUITE_SINGLEUSERTS 0x00000100#define VER_SUITE_PERSONAL 0x00000200#define VER_SUITE_BLADE 0x00000400#define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800#define VER_SUITE_SECURITY_APPLIANCE 0x00001000#define VER_SUITE_STORAGE_SERVER 0x00002000#define VER_SUITE_COMPUTE_SERVER 0x00004000*/#define VER_SUITE_WH_SERVER 0x00008000typedef void(WINAPI *PGNSI)(LPSYSTEM_INFO);typedef BOOL (WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD);BOOL GetOSDisplayString( LPTSTR pszOS){OSVERSIONINFOEX osvi;SYSTEM_INFO si;PGNSI pGNSI;PGPI pGPI;BOOL bOsVersionInfoEx;DWORD dwType;ZeroMemory(&si,sizeof(SYSTEM_INFO));ZeroMemory(&osvi,sizeof(OSVERSIONINFOEX));osvi.dwOSVersionInfoSize =sizeof(OSVERSIONINFOEX);bOsVersionInfoEx =GetVersionEx((OSVERSIONINFO*)&osvi);if(!bOsVersionInfoEx)return FALSE;// Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.pGNSI =(PGNSI)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),"GetNativeSystemInfo");if(NULL != pGNSI)pGNSI(&si);elseGetSystemInfo(&si);if( VER_PLATFORM_WIN32_NT==osvi.dwPlatformId &&osvi.dwMajorVersion >4){StringCchCopy(pszOS, BUFSIZE, TEXT("Microsoft "));// Test for the specific product.if( osvi.dwMajorVersion >=6){if( osvi.dwMajorVersion >6|| osvi.dwMinorVersion >2){StringCchCat(pszOS, BUFSIZE, TEXT("Windows 8 Later "));// for new OS}elseif( osvi.dwMinorVersion ==0){if( osvi.wProductType == VER_NT_WORKSTATION )StringCchCat(pszOS, BUFSIZE, TEXT("Windows Vista "));elseStringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2008 "));}elseif( osvi.dwMinorVersion ==1){if( osvi.wProductType == VER_NT_WORKSTATION )StringCchCat(pszOS, BUFSIZE, TEXT("Windows 7 "));elseStringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2008 R2 "));}elseif( osvi.dwMinorVersion ==2){StringCchCat(pszOS, BUFSIZE, TEXT("Windows 8 "));}pGPI =(PGPI)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),"GetProductInfo");pGPI( osvi.dwMajorVersion, osvi.dwMinorVersion,0,0,&dwType);switch( dwType ){case PRODUCT_ULTIMATE:StringCchCat(pszOS, BUFSIZE, TEXT("Ultimate Edition"));break;case PRODUCT_PROFESSIONAL:StringCchCat(pszOS, BUFSIZE, TEXT("Professional"));break;case PRODUCT_HOME_PREMIUM:StringCchCat(pszOS, BUFSIZE, TEXT("Home Premium Edition"));break;case PRODUCT_HOME_BASIC:StringCchCat(pszOS, BUFSIZE, TEXT("Home Basic Edition"));break;case PRODUCT_ENTERPRISE:StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition"));break;case PRODUCT_BUSINESS:StringCchCat(pszOS, BUFSIZE, TEXT("Business Edition"));break;case PRODUCT_STARTER:StringCchCat(pszOS, BUFSIZE, TEXT("Starter Edition"));break;case PRODUCT_CLUSTER_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Cluster Server Edition"));break;case PRODUCT_DATACENTER_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Edition"));break;case PRODUCT_DATACENTER_SERVER_CORE:StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Edition (core installation)"));break;case PRODUCT_ENTERPRISE_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition"));break;case PRODUCT_ENTERPRISE_SERVER_CORE:StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition (core installation)"));break;case PRODUCT_ENTERPRISE_SERVER_IA64:StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition for Itanium-based Systems"));break;case PRODUCT_SMALLBUSINESS_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Small Business Server"));break;case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:StringCchCat(pszOS, BUFSIZE, TEXT("Small Business Server Premium Edition"));break;case PRODUCT_STANDARD_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Standard Edition"));break;case PRODUCT_STANDARD_SERVER_CORE:StringCchCat(pszOS, BUFSIZE, TEXT("Standard Edition (core installation)"));break;case PRODUCT_WEB_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Web Server Edition"));break;}}elseif(/*osvi.dwMajorVersion == 5 &&*/ osvi.dwMinorVersion ==2){if(GetSystemMetrics(SM_SERVERR2))StringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2003 R2, "));elseif( osvi.wSuiteMask & VER_SUITE_STORAGE_SERVER )StringCchCat(pszOS, BUFSIZE, TEXT("Windows Storage Server 2003"));elseif( osvi.wSuiteMask & VER_SUITE_WH_SERVER )StringCchCat(pszOS, BUFSIZE, TEXT("Windows Home Server"));elseif( osvi.wProductType == VER_NT_WORKSTATION &&si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64){StringCchCat(pszOS, BUFSIZE, TEXT("Windows XP Professional x64 Edition"));}elseStringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2003, "));// Test for the server type.if( osvi.wProductType != VER_NT_WORKSTATION ){if( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_IA64 ){if( osvi.wSuiteMask & VER_SUITE_DATACENTER )StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Edition for Itanium-based Systems"));elseif( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition for Itanium-based Systems"));}elseif( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 ){if( osvi.wSuiteMask & VER_SUITE_DATACENTER )StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter x64 Edition"));else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise x64 Edition"));elseStringCchCat(pszOS, BUFSIZE, TEXT("Standard x64 Edition"));}else{if( osvi.wSuiteMask & VER_SUITE_COMPUTE_SERVER )StringCchCat(pszOS, BUFSIZE, TEXT("Compute Cluster Edition"));else if( osvi.wSuiteMask & VER_SUITE_DATACENTER )StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Edition"));else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition"));else if( osvi.wSuiteMask & VER_SUITE_BLADE )StringCchCat(pszOS, BUFSIZE, TEXT("Web Edition"));elseStringCchCat(pszOS, BUFSIZE, TEXT("Standard Edition"));}}}elseif(/*osvi.dwMajorVersion == 5 &&*/ osvi.dwMinorVersion ==1){StringCchCat(pszOS, BUFSIZE, TEXT("Windows XP "));if( osvi.wSuiteMask & VER_SUITE_PERSONAL )StringCchCat(pszOS, BUFSIZE, TEXT("Home Edition"));elseStringCchCat(pszOS, BUFSIZE, TEXT("Professional"));}elseif(/*osvi.dwMajorVersion == 5 &&*/ osvi.dwMinorVersion ==0){StringCchCat(pszOS, BUFSIZE, TEXT("Windows 2000 "));if( osvi.wProductType == VER_NT_WORKSTATION ){StringCchCat(pszOS, BUFSIZE, TEXT("Professional"));}else{if( osvi.wSuiteMask & VER_SUITE_DATACENTER )StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Server"));elseif( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )StringCchCat(pszOS, BUFSIZE, TEXT("Advanced Server"));elseStringCchCat(pszOS, BUFSIZE, TEXT("Server"));}}// Include service pack (if any) and build number.if( _tcslen(osvi.szCSDVersion)>0){StringCchCat(pszOS, BUFSIZE, TEXT(" "));StringCchCat(pszOS, BUFSIZE, osvi.szCSDVersion);}TCHAR buf[80];StringCchPrintf( buf,80, TEXT(" (build %d)"), osvi.dwBuildNumber);StringCchCat(pszOS, BUFSIZE, buf);if( osvi.dwMajorVersion >=6){if( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 )StringCchCat(pszOS, BUFSIZE, TEXT(", 64-bit"));elseif(si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_INTEL )StringCchCat(pszOS, BUFSIZE, TEXT(", 32-bit"));}return TRUE;}else{return FALSE;}}BOOL GetOldOSVer(LPSTR pszOldOS){OSVERSIONINFOEXA osvi;BOOL bOsVersionInfoEx;ZeroMemory(&osvi,sizeof(OSVERSIONINFOEXA));// Try calling GetVersionEx using the OSVERSIONINFOEX structure.// If that fails, try using the OSVERSIONINFO structure.osvi.dwOSVersionInfoSize =sizeof(OSVERSIONINFOEXA);bOsVersionInfoEx =GetVersionExA((OSVERSIONINFOA *)&osvi);if(!bOsVersionInfoEx ){osvi.dwOSVersionInfoSize =sizeof(OSVERSIONINFOA);if(!GetVersionExA((OSVERSIONINFOA *)&osvi)){StringCchCatA(pszOldOS, BUFSIZE,"Unknow Windows?");return FALSE;}}switch(osvi.dwPlatformId){// Test for the Windows NT product family.case VER_PLATFORM_WIN32_NT:if(osvi.dwMajorVersion <=4){StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Windows NT ");}else{return FALSE;}break;// Test for the Windows Me/98/95.case VER_PLATFORM_WIN32_WINDOWS:if(osvi.dwMajorVersion ==4){switch(osvi.dwMinorVersion){case 0:StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Windows 95 ");if(osvi.szCSDVersion[1]=='C'|| osvi.szCSDVersion[1]=='B')StringCchCatA(pszOldOS, BUFSIZE,"OSR2 ");break;case 3://??StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Windows 95 OSR2 ");case 10:StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Windows 98 ");if( osvi.szCSDVersion[1]=='A'|| osvi.szCSDVersion[1]=='B')StringCchCatA(pszOldOS, BUFSIZE,"SE ");break;case 90:StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Windows Millennium Edition ");break;}}break;case VER_PLATFORM_WIN32s:StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Win32s ");break;default:return FALSE;}if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT){// Test for specific product on Windows NT 4.0 SP6 and later.if( bOsVersionInfoEx ){// Test for the workstation type.if( osvi.wProductType == VER_NT_WORKSTATION){if( osvi.dwMajorVersion ==4)StringCchCatA(pszOldOS, BUFSIZE,"Workstation 4.0 ");elseif( osvi.wSuiteMask & VER_SUITE_PERSONAL )StringCchCatA(pszOldOS, BUFSIZE,"Home Edition ");elseStringCchCatA(pszOldOS, BUFSIZE,"Professional ");}// Test for the server type.elseif( osvi.wProductType == VER_NT_SERVER ||osvi.wProductType == VER_NT_DOMAIN_CONTROLLER ){// Windows NT 4.0if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )StringCchCatA(pszOldOS, BUFSIZE,"Server 4.0, Enterprise Edition ");elseStringCchCatA(pszOldOS, BUFSIZE,"Server 4.0 ");}}// Test for specific product on Windows NT 4.0 SP5 and earlierelse{HKEY hKey;TCHAR szProductType[BUFSIZE];DWORD dwBufLen=BUFSIZE*sizeof(TCHAR);LONG lRet =RegOpenKeyEx( HKEY_LOCAL_MACHINE,TEXT("SYSTEM\\CurrentControlSet\\Control\\ProductOptions"),0, KEY_QUERY_VALUE,&hKey );if( lRet != ERROR_SUCCESS )return FALSE;lRet =RegQueryValueEx( hKey, TEXT("ProductType"),NULL, NULL,(LPBYTE) szProductType,&dwBufLen);RegCloseKey( hKey );if((lRet != ERROR_SUCCESS)||(dwBufLen > BUFSIZE*sizeof(TCHAR)))return FALSE;if( lstrcmpi( TEXT("WINNT"), szProductType)==0)StringCchCatA(pszOldOS, BUFSIZE,"Workstation ");if( lstrcmpi( TEXT("LANMANNT"), szProductType)==0)StringCchCatA(pszOldOS, BUFSIZE,"Server ");if( lstrcmpi( TEXT("SERVERNT"), szProductType)==0)StringCchCatA(pszOldOS, BUFSIZE,"Advanced Server ");char szVer[20];StringCchPrintfA(szVer,sizeof(szVer),"%d.%d ", osvi.dwMajorVersion, osvi.dwMinorVersion );StringCchCatA(pszOldOS, BUFSIZE, szVer);}// Display service pack (if any) and build number.char sp6[]="Service Pack 6";char szBuf[40];if( osvi.dwMajorVersion ==4&&lstrcmpiA( osvi.szCSDVersion, sp6 )==0){HKEY hKey;LONG lRet;// Test for SP6 versus SP6a.lRet =RegOpenKeyEx( HKEY_LOCAL_MACHINE,TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Hotfix\\Q246009"),0, KEY_QUERY_VALUE,&hKey );if( lRet == ERROR_SUCCESS ){StringCchPrintfA(szBuf,sizeof(szBuf),"Service Pack 6a (Build %d)", osvi.dwBuildNumber &0xFFFF);StringCchCatA(pszOldOS, BUFSIZE, szBuf);}else// Windows NT 4.0 prior to SP6a{StringCchPrintfA(szBuf,sizeof(szBuf),"%s (Build %d)", osvi.szCSDVersion, osvi.dwBuildNumber &0xFFFF);StringCchCatA(pszOldOS, BUFSIZE, szBuf);}RegCloseKey( hKey );}else// not Windows NT 4.0{StringCchPrintfA(szBuf,sizeof(szBuf),"%s (Build %d)", osvi.szCSDVersion, osvi.dwBuildNumber &0xFFFF);StringCchCatA(pszOldOS, BUFSIZE, szBuf);}}return TRUE;}int __cdecl _tmain()int _tmain(int argc, _TCHAR* argv[]){TCHAR szOS[BUFSIZE];if(GetOSDisplayString( szOS )){_tprintf( TEXT("\n%s\n"), szOS );}else{char szOldOS[BUFSIZE]={0};if(GetOldOSVer(szOldOS)){printf("\n%s\n", szOldOS);}}}
转:Windows版本判断大全的更多相关文章
- Windows 系统版本判断
Windows 系统版本判断 博客分类: C/C++ 很多情况下,需要软件判断操作系统,其实网上写的都很少,我希望这篇文章能给大家帮助 首先我们要在.h中定义下面的东西 #define PRODU ...
- Windows CMD命令大全(转)
Windows CMD命令大全 命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行 ...
- Windows窗口消息大全(转)
Windows窗口消息大全,全不全自己看 ////////////////////////////////////////////////////////////////////////// #inc ...
- Windows API函数大全(完整)
Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...
- [windows菜鸟]Windows API函数大全(完整)
Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...
- Windows 窗体消息大全(速查)
Windows窗口消息大全,全不全自己撸 通用窗口消息 WM_NULL:--------->空消息,可检测程序是否有响应等 WM_CREATE:--------->新建一个窗口 WM_DE ...
- Windows CMD命令大全
http://greatverve.cnblogs.com/archive/2011/12/09/windows-cmd.html 命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机 ...
- Windows CMD命令大全【转】
命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在使用,所以一 ...
- windows cmd 命令大全
原文: http://www.cnblogs.com/greatverve/archive/2011/12/09/windows-cmd.html 命令简介 cmd是command的缩写.即命令行 . ...
随机推荐
- Apache 配置 http 转 https
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{SERVER_PORT} !^443$ Rewr ...
- debug启动项目很慢
用debug启动项目比正常启动慢,从网上找到的是这样说的.删除所有的断点就可以了. 这个问题可能是由于eclipse和tomcat的交互而产生的,在以debug模式启动tomcat时,发生了读取文件错 ...
- bzoj1079 着色方案 记忆化搜索(dp)
题目传送门 题目大意: 有k种颜色,每个颜色ci可以涂个格子,要求相邻格子颜色不能一样,求方案数.ci<=5,k<=15. 思路: 题目里最重要的限制条件是相邻格子颜色不能相同,也就是当前 ...
- Codeforces Round #462 (Div. 2), problem: (C) A Twisty Movement (求可以转一次区间的不递增子序列元素只有1,2)
题目意思: 给长度为n(n<=2000)的数字串,数字只能为1或者2,可以将其中一段区间[l,r]翻转,求翻转后的最长非递减子序列长度. 题解:求出1的前缀和,2的后缀和,以及区间[i,j]的最 ...
- 微信小程序 修改(自定义) 单选/复选按钮样式 checkbox/radio样式自定义
参考文章: 微信小程序 修改(自定义) 单选/复选按钮样式 checkbox/radio样式自定义
- Vue-cli 构建项目 的`.vue`组件中, scss中添加背景图路径问题
[解决方法]: 更改build/utils.js文件中的 ExtractTextPlugin 的 options配置. if (options.extract) { return ExtractTex ...
- aoj0525
一.题意:题目大致是讲一个烧饼铺烤烧饼,在一个n X m (1<=n<=10,1<=m<=10000)的烤桌上面摆着一堆烧饼,数字1表示烧饼正面,0表示烧饼反面.然后你每次可以 ...
- java c c++大学补遗
第一次面试时的问题是一个看起来50多数的老工程师问的, 仍然记忆犹新 java(面向对象)的基本特性? 封装 继承 多态 工作几年后,各种框架用来用去, 回想起这个问题,java也就剩下这几个特性了
- shell 脚本学习之内部变量
一,$BASH Bash的二进制程序文件的路径 二,$BASH_ENV 这个环境变量会指向一个Bash的启动文件, 当一个脚本被调用的时候, 这个启动文件将会被读取. 三,$BASH_SUBSHELL ...
- 移动端刷新组件XtnScroll--Angular4实现
刷新组件 - 主要是学习一下Angular4所有花了我一天时间,写了这个刷新组件. 以项目开发当中,特别是手机移动端开发的时候,经常要用到就是上拉加载下一面,下拉刷新获取最新数据的功能. 在网也有很多 ...