20200808猪笔试

文章目录

  • 一个字符串,往后面加东西,至少加几个就成为回文串。
  • 一个正数组,选一些加起来最大的且和不含5
  • 那 2,3,4,5
  • a

一个字符串,往后面加东西,至少加几个就成为回文串。

  • 这个加单
  • 你往后面添了几个,说明一开始的地方有几个就是和你添的对称
  • 这就说明中间的就是回文串
  • 只要把这个找出来就行了

一个正数组,选一些加起来最大的且和不含5

5 15 5 15

  • 答案是40

  • 每个数字都是yes or no

  • 2 n 2^n 2n种选择

  • 先看看has5
  • 就是看一个数字里面有没有5

#include 

using namespace std;
bool has5(int m)
{
	int resi = 10;
	while (m)
	{
		if (m % resi == 5)
			return true;
		m = m / resi;
	}
	return false;
}

#define N 5
#define col 20000
int main()
{
	int A[N] = { 5,15,5,15,5 };
	int sum = 0;
	for (int i = 0; i < N; i++)
	{
		sum += A[i];
	}
	cout << sizeof(bool) << endl;
	bool* temp = (bool*)malloc(sizeof(bool) * col);
	for (int j = 0; j <= sum; j++)
	{
		temp[j] = 0;
	}
	temp[0] = true;

	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j <= sum; j++)
		{
			if (temp[j])
			{
				temp[j + A[i]] = true;
			}
		}
	}
	for (int j = sum; j >= 0; j--)
	{
		if (temp[j] && !has5(j))
		{
			cout << "答案是" << j << endl;
			break;
		}
	}

	/*for (int j = 0; j <= sum; j++)
	{
		if (temp[j])
		{
			cout << "这个数可以被合成" << j << endl;
		}
	}*/

}

那 2,3,4,5

  • 所有可能组合是
  • 2
  • 2,3,5
  • 2,3,5,4,6,7,9
  • 2,3,5,4,6,7,9,5,7,巴拉巴拉
  • 这个太适合动态规划了哦!!
  • 我用这个思路秒杀楼上的题目

a
  • 那从小到大安排就是
  • a,b,c,(a+b),
  • 这好像没法向下安排了吧

你可能感兴趣的:(interview)