一道很有意思的題目

2021-06-29 09:57:38 字數 750 閱讀 5097

先列出**,然後再開始解析

#include "stdafx.h"

#include

using

namespace

std;

class a;

class b :public a;

void seta(a* data, int idx)

int _tmain(int argc, _tchar* argv)

for (int i = 0; i < 4; i++)

system("pause");

return

0;}

該題目問輸出結果是如何,上面的**中b繼承了a類,我們主要看看seta函式

void seta(a* data, int idx)

該函式將a型指標指向的物件的成員a設定為2,我們考慮指標運算,data[idx]與data+idx無異,從指標型別上看,data+1移動的位置僅僅只是乙個a的位置,這樣說也許有些表示不清楚,為了容易表達,我重新寫一下seta這個函式:

void seta(a* dt, int idx)

在函式中dt[1].a其實不是指向data[1].a,而是指向data[0].b,接下來就很容易能夠得到運算的結果:

分享一道很有意思的演算法題目

題目 有100盞燈和100個開關,剛開始的時候等全是滅的,someone第一輪按下所有開關 開的按一下變滅,滅的按一下變開 第二輪隔乙個按一下 偶數個按 第三輪隔2個 3的倍數個按 求第100輪之後有多少盞燈是亮的。本題有三個層次的解法 第乙個層次是暴力解法,即迴圈100輪,分別記錄每一盞等的狀態,...

一道很有意思的演算法題

已知陣列a n 由陣列a n 構造陣列b n 構造方法如下 product a 0 a 1 a n b i product a i 0 i n 要求如下 1.不能使用除法。2.不能宣告新的變數,不能申請新的記憶體。3.時間複雜度為o n 簡單分析 1.不能使用除法的話必須使用累乘。2.由於時間複雜度...

一道有意思的滑動視窗題目

今天看到了一道很有意思的leetcode題目,記錄一下。可獲得的最大點數 幾張卡牌 排成一行,每張卡牌都有乙個對應的點數。點數由整數陣列 cardpoints 給出。每次行動,你可以從行的開頭或者末尾拿一張卡牌,最終你必須正好拿 k 張卡牌。你的點數就是你拿到手中的所有卡牌的點數之和。給你乙個整數陣...