谈谈你对面向对象编程的认识?
#include <iostream>
#include <string>
#include "BigInt.h"
using namespace std;
// 素数数组
int primeNumber[26] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97, 101};
int main()
{
string strOne = "ABCDEFGHLMNOPQRS";
string strTwo = "DCGSRQPOM";
// 这里需要用到大整数
CBigInt product = 1; //大整数除法的代码,下头给出。
// 遍历长字符串,得到每个字符对应素数的乘积
for (int i = 0; i < strOne.length(); i++)
{
int index = strOne[i] - 'A';
product = product * primeNumber[index];
}
// 遍历短字符串
for (int j = 0; j < strTwo.length(); j++)
{
int index = strTwo[j] - 'A';
// 如果余数不为0,说明不包括短字串中的字符,跳出循环
if (product % primeNumber[index] != 0)
break;
}
// 如果积能整除短字符串中所有字符则输出"true",否则输出"false"。
if (strTwo.length() == j)
cout << "true" << endl;
else
cout << "false" << endl;
return 0;
}
线程和进程区别和联系。什么是“线程安全”
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应得并发性。进程和线程的区别在于:
一个程序至少有一个进程,一个进程至少有一个线程。
线程的划分尺度小于进程,使得多线程程序的并发性高,另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。
线程安全问题都是由全局变量及静态变量引起的。
若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。
个人给出的答案非常简单,直接对比表尾项,如果表尾项相同,那么说明肯定存在同样的url,如果不相同,则不存在。
代码就略了,说下思路,分析如下:
重点是这个表式一个单链表,单链表意味着这个表不会形成环,就能找到它的尾部。而且很有意思的是,这个表是根据URL进行链接的,这会产生一个什么样的问题呢?假设当两个表的某一项指向同一个URL ‘urlA’时,它们的下一项必定指向同样的URL,直至结尾,即从'urlA'开始,两表所有项相交。那么结尾也必定相同。
反证一下:从两表结尾项向上递归,当结尾项不同时,结尾-1项也必定不同,直至递归到其中一表的表头。
数组al[0,mid-1] 和 al[mid,num-1],都分别有序。将其merge成有序数组al[0,num-1],要求空间复杂度O(1)
#include <iostream>
using namespace std;
void InsertSort(int a[], int index, int length){
int temp;
for(int i = index; i<length; i++){
if(a[i] >= a[i+1]){
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
void sort(int a[], int mid, int length){
int temp;
for(int i=0; i<=mid-1; i++){
if(a[mid] < a[i]){
temp = a[i];
a[i] = a[mid];
a[mid] = temp;
InsertSort(a, mid, length - 1);
}
}
}
int main()
{
int a[11] ={1, 4, 6, 7, 10, 2, 3, 8, 9, 15, 16};
sort(a,5,11);
for(int i=0;i <11; i++)
cout << a[i]<<" ";
return 0;
}
浙公网安备 33010602011771号