for i in range(73): for j in range(144): a[i,j]=b[i,j]-c[j]为什么会报错invalid index to scalar variable
时间: 2024-05-07 18:18:08 浏览: 16
报错"invalid index to scalar variable"是因为在Python中,只能对单个标量变量进行索引,而不能对一个数组或矩阵中的元素进行索引。在你的代码中,a是一个二维数组,而你使用了逗号分隔的两个索引i和j来访问它的元素。这是错误的语法,应该使用a[i][j]来访问a的元素。
正确的代码应该是:
```
for i in range(73):
for j in range(144):
a[i][j] = b[i][j] - c[j]
```
这样就能够正确地访问a中的元素,并将b和c中的元素相减赋值给a中的对应元素。
相关问题
使用for循环完成乘法口诀: for i in range(a,b): ----for j in range(c,d): --------print("%dX%d=%-2d"%(j,i,j*i), end=" ") ----print() abcd的值为多少,可以正常输出乘法口诀?
使用上面的代码完成乘法口诀的输出,需要满足以下条件:
- a、b、c、d 都是整数;
- a、b、c、d 的值满足 a < b 且 c < d;
- 在 for 循环中使用了正确的变量名。
具体来说,变量 i 代表的是乘法口诀中的行数,变量 j 代表的是列数。因此,对于 2~9 的乘法口诀,可以将 a、b、c、d 的值设置为:
- a = 2
- b = 10
- c = 1
- d = 10
这样,就可以正常输出 2~9 的乘法口诀了。完整代码如下:
```
for i in range(a, b):
for j in range(c, d):
print("%dX%d=%-2d" % (j, i, j * i), end=" ")
print()
```
输出结果如下:
```
1X2=2 2X2=4 3X2=6 4X2=8 5X2=10 6X2=12 7X2=14 8X2=16 9X2=18
1X3=3 2X3=6 3X3=9 4X3=12 5X3=15 6X3=18 7X3=21 8X3=24 9X3=27
1X4=4 2X4=8 3X4=12 4X4=16 5X4=20 6X4=24 7X4=28 8X4=32 9X4=36
1X5=5 2X5=10 3X5=15 4X5=20 5X5=25 6X5=30 7X5=35 8X5=40 9X5=45
1X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36 7X6=42 8X6=48 9X6=54
1X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=49 8X7=56 9X7=63
1X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=64 9X8=72
1X9=9 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81
```
用c语言实现def lcs(a, b): m, n = len(a), len(b) c = [[0] * (n+1) for i in range(m+1)] for i in range(1, m+1): for j in range(1, n+1): if a[i-1] == b[j-1]: c[i][j] = c[i-1][j-1] + 1 else: c[i][j] = max(c[i][j-1], c[i-1][j]) res = "" i, j = m, n while i > 0 and j > 0: if a[i-1] == b[j-1]: res = a[i-1] + res i -= 1 j -= 1 elif c[i-1][j] > c[i][j-1]: i -= 1 else: j -= 1 return resa = "ABCDBAB"b = "BDCABA"print(lcs(a, b)) # output: BCBA
以下是使用 C 语言实现 lcs 函数的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
char* lcs(char* a, char* b) {
int m = strlen(a), n = strlen(b);
int c[MAX_LEN + 1][MAX_LEN + 1];
memset(c, 0, sizeof(c));
for(int i = 1; i <= m; i++) {
for(int j = 1; j <= n; j++) {
if(a[i-1] == b[j-1])
c[i][j] = c[i-1][j-1] + 1;
else
c[i][j] = (c[i-1][j] > c[i][j-1]) ? c[i-1][j] : c[i][j-1];
}
}
char* res = (char*)malloc(sizeof(char) * (c[m][n] + 1));
int i = m, j = n, k = c[m][n];
while(i > 0 && j > 0) {
if(a[i-1] == b[j-1]) {
res[--k] = a[i-1];
i--;
j--;
} else if(c[i-1][j] > c[i][j-1]) {
i--;
} else {
j--;
}
}
res[c[m][n]] = '\0';
return res;
}
int main() {
char a[] = "ABCDBAB";
char b[] = "BDCABA";
char* res = lcs(a, b);
printf("%s\n", res);
free(res);
return 0;
}
```
输出结果为 "BCBA"。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)