华为笔试题农夫养牛繁殖问题—迭代器的一个错误使用方式

【题目】一个农夫养了一批怪牛,一对牛每月繁殖一对小牛,小牛出生后三个月时间来生长,第四个月来繁殖。

  输入牛的组数n,然后在输入n组,每组由两行组成:第一行是牛的对数,第二行是需要的成长时间;如此依次输入n组。

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 
 5 int cow(int month_num)
 6 {
 7     if (month_num<=4)
 8         return month_num+1;
 9     else
10         return cow(month_num-1)+cow(month_num-4);
11 }
12 int main()
13 {
14     int num,num_cow,month_num=0;
15     vector<int> num_sr;
16     vector<int>::iterator it;
17 
18     cin>>num;
19     for(int i=1;i<=2*num;++i)
20     {
21         cin>>num_cow;
22         num_sr.push_back(num_cow);
23     }
24     for(it=num_sr.begin();it<=num_sr.end()-2;)
25     {    
26         //cout<<*(it)<<endl;
27         int num_total=cow(*(++it));
28         //cout<<*(it)<<endl;
29         //注意此处,上面的++it对迭代器进行了+1操作,it此时已经指向了it+1
30         cout<<(*(--it))*num_total<<endl;
31         it=it+2;
32     }
33     while(1);
34 }

  ++it相当于it=it+1;

  二、不用迭代器

 1 //使用两个vector,并且以数组形式取出迭代器里面的值
 2     vector<int> dui;
 3     vector<int> yue;
 4 
 5     int num;
 6     cin >> N;
 7     for (i = 0; i < N; i++)
 8     {
 9         cin >> temp;
10         dui.push_back(temp);
11         cin >> temp;
12         yue.push_back(temp);
13     }
14     for (i = 0; i < N; i++)
15     {    
16         num =cow(yue[i]);
17         cout << dui[i] * num << endl;
18     }
19     while (1);
20 }

猜你喜欢

转载自www.cnblogs.com/huangfuyuan/p/9556783.html