使用指针数组和动态分配内存方式记录一批字符串,并根据字符串内容按字典序将对应序号输出
样例输入
4 time victory setting iterator
样例输出
4 3 1 2
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int n = 0; cin >> n;
char (*str)[81] = new char[n][81];
for (int i = 0; i < n; i++)cin >> str[i];
int *num = new int[n];
for (int i = 0; i < n; i++)* (num+i) = i;//初始化
for (int i = 0; i < n;i++)//排序
for (int j = i + 1; j < n;j++)
if (strcmp(str[j], str[i]) < 0){
char temp[81]; strcpy_s(temp, str[i]); strcpy_s(str[i], str[j]); strcpy_s(str[j], temp);
int tem = *(num + i); *(num + i) = *(num + j); *(num + j) = tem;
}//小于
for (int i = 0; i < n; i++)cout << *(num + i) + 1 << " ";//输出
cout << endl;
delete[]str;
delete[]num;
system("pause");
return 0;
}
样例输入
4 time victory setting iterator
样例输出
4 3 1 2
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int n = 0; cin >> n;
char (*str)[81] = new char[n][81];
for (int i = 0; i < n; i++)cin >> str[i];
int *num = new int[n];
for (int i = 0; i < n; i++)* (num+i) = i;//初始化
for (int i = 0; i < n;i++)//排序
for (int j = i + 1; j < n;j++)
if (strcmp(str[j], str[i]) < 0){
char temp[81]; strcpy_s(temp, str[i]); strcpy_s(str[i], str[j]); strcpy_s(str[j], temp);
int tem = *(num + i); *(num + i) = *(num + j); *(num + j) = tem;
}//小于
for (int i = 0; i < n; i++)cout << *(num + i) + 1 << " ";//输出
cout << endl;
delete[]str;
delete[]num;
system("pause");
return 0;
}


