7-3 central list

文章介绍了如何使用C语言编写一个程序,通过检查给定数列是否满足中心对称性(即序列与其自身对称),判断它是否为中心对称列表。程序利用字符串处理和循环结构实现判断。

If a list is central symmetry, it is called a central list. for example, 1->3->5->7->9->7->5->3->1 is a central list.
Give you a sequence of numbers, form a link list and then judge whether it is a central list.

输入格式:

A sequence of numbers seperated by comma

输出格式:

If it is a central list output Yes, otherwise No

输入样例:

1,3,5,7,9,7,5,3,1,

输出样例:

Yes

C语言代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 100

main(){
    //input
    char string[maxsize];
    fgets(string,maxsize,stdin);
    int i,j;
    int flag=1;
    for(i=0,j=strlen(string)-3;i<=j;){
        if(string[i]!=string[j]){
            flag=0;
            break;
        }
        i+=2;
        j-=2;
    }
    if(flag) printf("Yes");
    else printf("No");
}
注意:

1.注意j的初始值,strlen获取的字符串长度包括换行符和结尾的'\0',因此strlen的长度比实际输入大二。

2.之所以采用string获取输入并用strlen判断终止,是因为输入没有明确的终止条件,用getchar()逐个输入很容易导致PTA中运行超时(虽然我也不知道原理是什么)

在 Qt 中让 `ui->centralWidget` 行移动触发 `itemChanged` 事件,针对不同的控件有不同的实现方式。通常 `itemChanged` 事件用于 `QTableWidget` 和 `QListWidget` 等控件。下面分别给出 `QTableWidget` 和 `QListWidget` 的示例。 ### QTableWidget 在 `QTableWidget` 里,移动行时并不直接支持触发 `itemChanged` 事件。需要手动处理行移动操作,并且在行移动之后手动更新数据,进而触发 `itemChanged` 信号。以下是一个简易示例: ```cpp #include <QTableWidget> #include <QDebug> // 手动更新单元格数据以触发 itemChanged 信号 void moveRowInTableWidget(QTableWidget* tableWidget, int fromRow, int toRow) { if (fromRow < 0 || toRow < 0 || fromRow >= tableWidget->rowCount() || toRow >= tableWidget->rowCount()) { return; } // 保存要移动的行的数据 QList<QTableWidgetItem*> rowItems; for (int col = 0; col < tableWidget->columnCount(); ++col) { QTableWidgetItem* item = tableWidget->takeItem(fromRow, col); if (item) { rowItems.append(item); } } // 插入到新的位置 tableWidget->insertRow(toRow); for (int col = 0; col < tableWidget->columnCount(); ++col) { if (col < rowItems.size()) { tableWidget->setItem(toRow, col, rowItems[col]); } } // 删除原来的行 tableWidget->removeRow(fromRow > toRow ? fromRow + 1 : fromRow); } // 连接 itemChanged 信号 connect(ui->tableWidget, &QTableWidget::itemChanged, [=](QTableWidgetItem* item) { int row = item->row(); int column = item->column(); QString newValue = item->text(); qDebug() << row << column << newValue; }); // 调用移动行的函数 moveRowInTableWidget(ui->tableWidget, 0, 1); ``` ### QListWidget 对于 `QListWidget`,同样需要手动处理行移动操作,并且在行移动之后更新数据来触发 `itemChanged` 信号。以下是一个简单的示例: ```cpp #include <QListWidget> #include <QMessageBox> // 手动更新项数据以触发 itemChanged 信号 void moveItemInListWidget(QListWidget* listWidget, int fromRow, int toRow) { if (fromRow < 0 || toRow < 0 || fromRow >= listWidget->count() || toRow >= listWidget->count()) { return; } QListWidgetItem* item = listWidget->takeItem(fromRow); listWidget->insertItem(toRow, item); // 触发 itemChanged 信号 emit listWidget->itemChanged(item); } // 连接 itemChanged 信号 Object::connect(ui->listWidget, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(singleClickedSlot(QListWidgetItem *))); // 单击槽函数 void MainWindow::singleClickedSlot(QListWidgetItem *item) { QMessageBox::information(NULL, "单击", item->text()); } // 调用移动项的函数 moveItemInListWidget(ui->listWidget, 0, 1); ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值