10月20号字节跳动第二批笔试求教
总共四道题
第一道题是输入一个数字n和数字m,接下来一行是n个数代表每个阵营的人数,再下一行是m个联盟关系,比如1,2或者2,3,如果那么1和3也是联盟,求人数最多的联盟的人数。这道题怎么做啊???
第二道是一个正向三角形经过分裂可以分割为3个正向和1个负向三角形,一个负向三角形可以分割为3个负向和1个正向三角形,求1个正向三角形经过n次分裂的最小正向三角形个数。这道题怎么做啊?为什么总是百分之10。下面附我的代码,求教
第三题艰难的百分之百
第四道题没时间做了,有牛友参加昨天的笔试记得题目吗??求教求代码。。。。。
第二题
#include <iostream> using namespace std; class Solution{ public: int getNum(int n){ // if(n==1){ // return 3; // } int res[n+1]; int fu[n+1]; res[0]=1; fu[0]=0; res[1]=3; fu[1]=1; for (int i = 2; i <n+1 ; ++i) { res[i]=res[i-1]*3+fu[i-1]; fu[i]=res[i-1]+fu[i-1]*3; cout<<res[i]<<" "<<fu[i]<<endl; } return res[n]%1000000007; } }; int main(){ int n; cin>>n; Solution s; cout<<s.getNum(n); return 0; }