假设我有一个方阵(例如4x4):
i = 0
result = []
tree = ET.fromstring(webdata)
counts = tree.findall('.//count')
for count in counts:
result.append(int(counts[i].text))
i += 1
并假设我将此矩阵存储在C ++ std :: vector v中,没有主对角线上的条目(a_ij,其中i = j):
a_00 a_01 a_02 a_03
a_10 a_11 a_12 a_13
a_20 a_21 a_22 a_23
a_30 a_31 a_32 a_33
如何编写一个C ++函数v = {a_01, a_02, a_03, a_10, a_12, a_13, a_20, a_21, a_23, a_30, a_31, a_32}
,它返回向量v中条目a_ij的索引?
答案 0 :(得分:0)
using namespace std;
int main()
{
int i, j, n;
cin >> n >> i >> j;
int ans = i * n + j - i;
if (j > i)
ans--;
cout << ans << endl;
return 0;
}
我这样做。我实际上认为我们有主对角线来解决这个问题。然后答案是i * n + j。很明显,在每一行中,主对角线上只有一个条目,所以我们减去第i行之前的行数,即i。
现在我们必须使用if语句来查看第i行的主对角线上的条目是在第j个元素之前还是之后。真的很简单。
希望它有所帮助!
答案 1 :(得分:0)
对于初学者而言,您只需要乘以(n_cols-1)而不是i * n_cols + j,因为您在每行中缺少一个项目。此外,您还需要调整j(基本上:if (j > i) --j
)。如果i == j,则返回错误。